You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP浏览器端脚本调用exec()后后续代码未执行的问题排查求助

PHP浏览器端脚本调用exec()后后续代码未执行的问题排查求助

各位好,我遇到了一个棘手的问题,想请大家帮忙分析排查下。先贴一段简化后的核心代码:

<?php 
$output = []; 
$fd=try_lock($file); // 内部通过flock()实现,使用LOCK_EX和LOCK_NB标志加锁
if (is_null($fd)) { 
    $input_errors[] = gettext("A CRL update is currently running, try again later."); 
} else { 
    echo "before exec"; 
    exec("/usr/local/bin/php -f /etc/rc.update_crl -- locked", $output); 
    if (empty($output)) { 
        print_info_box(gettext("CRL Update terminated successfully."), "success"); 
    } else { 
        $input_errors = $output; 
    } 
} 
unlock($fd); // 通过上面获取的文件描述符释放锁
echo "after exec"; 
?>

具体问题:

  • 这段PHP脚本是在浏览器(推测是Chrome)环境下运行的,但偶尔会出现exec()调用之后的所有代码都不执行的情况——包括判断$output的逻辑、unlock($fd)以及最后的echo "after exec"完全没有输出。
  • 我尝试过替换成system()或者shell_exec()执行命令,问题依然存在。
  • 如果给exec的命令末尾加上&让它后台运行,后续代码倒是能正常执行,但这样会导致锁提前被释放(主脚本会继续往下走流程),不符合业务逻辑,所以这个方案不可行。
  • 已经确认try_lock和unlock函数工作正常,锁相关的逻辑没有问题。

我搜了一圈没找到类似的案例,想问问大家有没有遇到过类似情况?会不会是浏览器相关的机制导致脚本中途中断了?

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.08 09:24:31