首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >找到PHP脚本终止源代码的最佳实践

问找到PHP脚本终止源代码的最佳实践
EN

Stack Overflow用户
提问于 2010-11-24 23:37:41
回答 5查看 1.6K关注 0票数 6

我有一个PHP脚本,它从数据库中获取一大块数据,对其进行处理,然后查看是否有更多的数据。这个进程无限期地运行,我在一台服务器上一次运行其中的几个。

它看起来像是:

代码语言:javascript
复制
<?php
    while($shouldStillRun)
    {
       // do stuff
    }
    logThatWeExitedLoop();
?>

问题是,过了一段时间,有些事情导致进程停止运行,而我还无法调试它并确定原因。

到目前为止,这是我用来获取信息的工具:

  • error_log -记录所有错误,但错误日志中没有显示错误。
  • register_shutdown_function -注册了一个自定义关闭函数。这确实会被调用,所以我知道进程不是被服务器杀死的,而是允许它完成的。(或者至少我认为这是被调用的情况?)
  • debug_backtrace -在我的自定义关闭函数中记录了一个debug_backtrace()。这只显示了一个调用,这是我的自定义关闭函数。
  • 日志如果到达脚本的末尾--在循环之外,我有一个函数记录脚本退出循环的情况(因此通常会到达源文件的末尾)。当脚本随机死亡时,它不会记录这个,所以不管是什么杀死了它,当它处于处理过程中时,就会杀死它。

您建议采取哪些其他调试方法来查找罪魁祸首?

注意:我应该补充一点,这并不是max_execution_time的问题,对于这些脚本来说,是禁用的。被杀前的时间是不一致的。它可以在死前跑10秒或12小时。

Update/Solution:谢谢大家的建议。通过记录输出,我发现当MySql查询失败时,脚本被设置为die()。哦哦。更新它以记录mysql错误,然后终止。让它像个魅力一样运作起来!

EN

回答 5

Stack Overflow用户

发布于 2010-11-25 01:18:04

我会记录你脚本的内存使用情况。也许它获得了太多的记忆,达到了记忆的极限而死了?

票数 2
EN

Stack Overflow用户

发布于 2010-11-25 00:12:07

我会将函数的状态记录到每个循环中几个不同位置的文件中。

您可以使用导出表单以字符串的形式获取大多数变量的内容。

您只需将其记录到某个文件,并对其进行监视。日志结束之前函数的最新状态应该会提供一些线索。

票数 0
EN

Stack Overflow用户

发布于 2010-11-25 00:12:54

听起来,无论发生什么,都不是标准的php错误。你应该可以尝试抛出自己的错误.语句,然后将其记录下来。除此之外,我没有更多的细节,因为我的手机远离个人电脑。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4272540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档