0
我有一个PHP脚本有时会耗尽内存(过程耗尽它)并异常终止。我想知道PHP中是否有任何功能允许我在脚本终止时执行“清理”操作。我尝试过“关机处理程序”,但它们似乎并没有被调用。捕获PHP脚本的正常和异常终止
有什么像我可以使用的“信号处理程序”或“关闭回调”?我想调用一个在脚本退出时执行某些操作的函数(通常或异常)。
我有一个PHP脚本有时会耗尽内存(过程耗尽它)并异常终止。我想知道PHP中是否有任何功能允许我在脚本终止时执行“清理”操作。我尝试过“关机处理程序”,但它们似乎并没有被调用。捕获PHP脚本的正常和异常终止
有什么像我可以使用的“信号处理程序”或“关闭回调”?我想调用一个在脚本退出时执行某些操作的函数(通常或异常)。
PHP中没有任何清理功能,可以像您希望的那样工作。你可以/应该做的就是看看你的代码,看看如何进行最优化以完成你所需要的操作而不会导致内存不足。
PHP内置了一个函数,可以让您获得当前分配给PHP的内存量memory_get_usage。通过这个,您可以检查PHP当前使用的内存量,并将其与您的php.ini
文件中分配的内存量进行比较。当你接近这个时候,你可以退后一步,或者拿起另一个线程,在这个线程离开的时候。
这里有一些事情可以做,以调整PHP还可能节省一些内存,其中一些你可能已经知道,但如果我有同样的问题我是这样看的:
php.ini
内存中的内存,或者尝试使用ini_set来增加PHP的内存大小。如果你养的内存量,这可能是一个暂时的解决问题PHP应该能够处理大量的数据和大量的变换,但任何事情可以做,以提高效率将只是帮助它沿着它的方式。
希望这有助于 liam-
这是命令行PHP或运行的Web应用程序的一部分? PHP代码是否在任何类型的框架或库中? – Liam
您是否考虑过数据库中的条目(不知道此脚本运行的频率)是否已经启动并在脚本末尾被删除?通过查看表格中的行,您可以非常容易地查看任何和所有未能完成的脚本? – Fluffeh
这可能有帮助 - http://php.net/manual/en/function.pcntl-signal.php –