Symfony2致命错误处理 - 致命错误:超出最大执行时间

时间:2015-12-09 18:11:40

标签: php symfony

这个问题已被问过几次,我没有找到满意的答案来解决我的具体情况。我正在执行一个长期运行的php脚本(来自symfony2控制器),该脚本访问Web服务获取数据并将其推送到数据库中。有时,随机地,无论我设置的执行时间限制是什么,我都会得到这些致命的错误异常 -

 Fatal Error: Maximum execution time of 120 seconds exceeded 

代码

 public function webCallAction()
 {
       set_time_limit(120);
       $count = 0;
       while($count < 100) {          
            $count = $count + 1;
            try{           
            $webAPIUtil = new WebAPIHelper();
            //fatal timeout error here on random occassions
            $dataList = $webAPIUtil ->getData();
            }
             catch(\FatalErrorException $e1)
             {
                //Not working
              }
            foreach ($dataList as $dataItem) {
                //Insert into database using doctrine
            }
       }


  }

这些似乎是临时错误,例如curl_timeouts等(来自第三方库)。我希望能够通过处理致命错误异常来重试调用。在Symfony2中有没有正确的方法?

其中一个问题的答案是 -

PHP不提供用于捕获和从致命错误中恢复的常规方法。这是因为在致命错误之后通常不应该恢复处理。匹配输出缓冲区的字符串(正如PHP.net上描述的原始帖子所建议的那样)绝对是不明智的。

但同样,这似乎是因为连接超时而被抛出的fatalerror。当我们捕获致命错误超时异常时,我们当然需要一个重试机制。

此外,如果我将代码作为脚本从命令行运行(在此处描述 - http://symfony.com/doc/current/cookbook/console/console_command.html

,这是否有意义?

0 个答案:

没有答案