我有一个可以从浏览器执行的父PHP脚本。这会通过exec('/full/path/to/php -f /full/path/to/child_script.php args &> debug.log &')
生成子进程,然后返回对浏览器的响应。子进程使用Plates和mPDF生成一堆PDF文件。当从浏览器通过exec
调用时,子脚本通过创建PDF大约有10%-20%的时间,然后神秘地停止而没有任何输出,除了我可能放入的任何echo
语句调试目的。
exec()
调用可以在我的本地计算机和QA服务器上运行,而不是在生产中chmod 0777
了解了子脚本及其操作的所有文件/目录display_errors
,log_errors
,track_errors
全部开启error_reporting = E_ALL | E_STRICT
max_execution_time = 600
exec
不在disable_functions
set_time_limit(0)
我真的很难过。可能是什么导致了这个?或者我应该采取哪些进一步的调试步骤?
更新
问题不在于调用exec
(或shell_exec
)本身,因为我可以调用父脚本,然后通过CLI从exec
调用主脚本。只有当我尝试通过网络执行时才会出现问题。
答案 0 :(得分:0)
有些评论是在正确的轨道上。在与我的托管公司讨论这个问题后,看起来他们在120秒的CPU时间后就会杀死脚本。这就是为什么我没有从PHP获得任何时间限制错误消息,并且实际执行时间不一致。
我的解决方案是将其重构为cron作业,服务器允许更长的限制。谢谢大家的建议。