致命错误php

Gra*_*it 10 php error-handling

当你在PHP中遇到致命错误时,有没有办法让代码继续(不退出)?例如,我得到一个超时致命错误,我希望每当它碰巧跳过此任务并继续与其他人.在这种情况下,脚本退出.

Gre*_*reg 14

有一个使用输出缓冲的hack会让你记录某些致命的错误,但是在发生致命错误之后无法继续执行脚本 - 这就是致命的原因!

如果您的脚本超时,您可以使用set_time_limit()它给它更多的时间来执行.


Pas*_*TIN 7

正如其名称所示,"致命错误"是致命的:它会停止执行脚本/程序.

如果您使用PHP生成网页并获得与之相关的致命错误max_execution_time,默认情况下等于30秒,那么您肯定会做一些真正花费太多时间的事情:用户不会等待这么长时间才能获得页面.

如果您使用PHP进行一些繁重的计算,而不是在网页中(但是通过CLI,或cron或类似的东西),您可以为其设置另一个(更大)max_execution_time.你有两种方法:

首先是修改php.ini,设置这个值(它已经在文件中;只需编辑属性的值).问题是它也会为Web服务器修改它,这很糟糕(毕竟这是一个安全措施).更好的方法是创建一个php.ini的副本,例如,phpcli.ini,并修改此文件.然后,在调用php时使用它:

php -c phpcli.ini myscript.php
Run Code Online (Sandbox Code Playgroud)

如果您需要为CLI执行配置许多属性,这将非常有用.(比如memory_limit,对于长期运行的批次,通常必须设置更高的值)

另一种方法是max_execution_time在调用php时定义一个不同的值,如下所示:

php -d max_execution_time=60 myscript.php
Run Code Online (Sandbox Code Playgroud)

例如,如果您通过crontab启动它,这非常棒.