Cron PHP-最后一个调用

Cron PHP-最后一个调用,cron,try-catch,php,Cron,Try Catch,Php,有没有办法告诉PHP运行最后一个函数,或者在发生致命错误时以某种方式重写某个错误处理程序?我有一个cron,它的主要入口点是: $obj = new obj(); $obj->run(); exit; 如果我没有显式地抛出错误,那么用try-catch包装它会奏效吗?我只想让PHP做一些简单的事情,比如创建一个包含致命错误的txt文件,甚至只是创建一个名为“failed.txt”的空文件,或者其他什么 谢谢 也许能帮到你 对于致命错误,也可以这样做:您可以在PHP中进行自定义错误处理。查

有没有办法告诉PHP运行最后一个函数,或者在发生致命错误时以某种方式重写某个错误处理程序?我有一个cron,它的主要入口点是:

$obj = new obj();
$obj->run();
exit;
如果我没有显式地抛出错误,那么用try-catch包装它会奏效吗?我只想让PHP做一些简单的事情,比如创建一个包含致命错误的txt文件,甚至只是创建一个名为“failed.txt”的空文件,或者其他什么

谢谢

也许能帮到你


对于致命错误,也可以这样做:

您可以在PHP中进行自定义错误处理。查看以下位置的手册:。这是一个相当简单的应用程序。

使用

try 
{ 
    //Code
} 
catch(Exception $e)
{
     //Execute on error
}

你写的是
cron
。使用指向新
php.ini
文件的路径调用脚本,在该文件中,您可以让php将错误记录到
STDERR
STDOUT

php -h
将为您提供所有命令行选项

如果出现问题,我们将通过电子邮件向您发送报告


或者,您可以将其设置为登录到自己的日志中,因为它是一个新的
php.ini
。您可以为大多数错误设置自定义错误处理程序,并在那里执行一些代码

但无法处理
E_错误
,这可能是您的致命错误


想象一下,如果这个错误是因为内存不足。您试图处理该错误,结果使用了更多内存。这只会引发另一个错误,而您正是从这里开始的。

使用
register\u shutdown\u function()
将要执行的函数注册为最后一个调用。无论是否有错误,这都将得到调用


有关更多信息,请参阅。

@Charlie:我想说的是,如果存在无法恢复的错误,除了标准错误日志之外,我最好如何对其进行指示,最好是从函数或块的捕获部分。我不是说如何在run()之间键入新函数;和退出();:PNot无法捕获所有错误(特别是致命错误)。但是,如果您启用了错误日志并正确配置了错误日志,那么每个错误都应该记录在日志中。还有其他更好的答案,所以我将把它作为一个注释发布:在紧要关头,您只需
触摸('/tmp/foo.lock')
并在最后删除它。如果有错误,那么该文件仍然存在。可能是的重复,但文档中说“以下错误类型无法使用用户定义的函数处理:E_错误、E_解析、E_核心错误、E_核心警告、E_编译错误、E_编译警告,以及调用set_error\u handler()的文件中提出的大多数E_STRICT。”我希望在一个致命错误之后能有一种方法来做些什么,这就是E_错误,对吧?但是文档说“以下错误类型不能用用户定义的函数来处理:E_错误、E_解析、E_核心错误、E_核心警告、E_编译错误、E_编译警告,以及大多数E_严格在调用set_error\u handler()的文件中提出。”我希望在一个致命错误后能有一种方法来做些什么,这就是E_错误,对吧?所以不管是什么,不管是找不到文件,还是MySQL连接太多,它都会运行finally?finally,即使没有错误,它也会执行。您需要的是一个通用异常捕获,它将在任何错误时执行。更新了我的答案PHP AFAIK中没有最终版本。这就是我最后要做的,所以谢谢,但罗密欧已经先回答了,所以很抱歉。。。