【问题标题】:php: try catch / error freezes server scriptphp:尝试捕获/错误冻结服务器脚本
【发布时间】:2021-04-21 12:21:32
【问题描述】:

我正在运行一个 cronjob 脚本,该脚本完全冻结在 try / catch 语句中(在 while 循环中)。 标语正在起作用,因为它正在记录错误(我放在那里),但随后它完全冻结而没有任何输出。 之后我只将echo "error"; 放在catch 语句中,但它不会输出并再次冻结。 添加die; 时,它会提示并且脚本按预期停止 - 但我想捕获错误并继续脚本。

while($rs = $res->fetch_assoc())
{

    try
    {
        $rc = new c_movie();
        $result = $rc->search();

    } catch(Throwable $t)
    {
        echo "ERROR!!!!";  // freezing here, does not echo
    }

}

知道什么可能导致脚本冻结吗? 谢谢

【问题讨论】:

  • 请分享相关代码 - 很难调试描述。
  • 要么您没有共享足够多的代码,要么它没有任何意义。您没有使用行外的任何数据$rs。另外,难道$res->fetch_assoc()只有一个结果吗?
  • search 是做什么的?它有自己的内部循环吗?很难想象$rs = $res->fetch_assoc() 会产生无限循环。
  • 另外,您希望在哪里看到输出?如果它是一个自动化的 cron 作业,你必须将它捕获到一个文件中。还是您在浏览器或 CLI 中手动运行脚本来测试它?

标签: php try-catch freeze


【解决方案1】:

我终于自己发现了..我的代码使用 get_headers() 导致在尝试加载具有 404 的 URL 时冻结。似乎服务器正在某种缓存它并冻结并且不会触发异常.很奇怪..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-29
    • 2013-07-04
    • 2021-01-04
    相关资源
    最近更新 更多