从exec()

时间:2015-06-25 19:27:18

标签: php

我有一个可以从浏览器执行的父PHP脚本。这会通过exec('/full/path/to/php -f /full/path/to/child_script.php args &> debug.log &')生成子进程,然后返回对浏览器的响应。子进程使用Plates和mPDF生成一堆PDF文件。当从浏览器通过exec调用时,子脚本通过创建PDF大约有10%-20%的时间,然后神秘地停止而没有任何输出,除了我可能放入的任何echo语句调试目的。

  • 使用浏览器使用的 exact 相同命令从CLI调用时,子脚本可以正常工作
  • exec()调用可以在我的本地计算机和QA服务器上运行,而不是在生产中
  • 安全模式已关闭
  • chmod 0777了解了子脚本及其操作的所有文件/目录
  • display_errorslog_errorstrack_errors全部开启
  • error_reporting = E_ALL | E_STRICT
  • max_execution_time = 600
  • exec不在disable_functions
  • 在子脚本中调用set_time_limit(0)

我真的很难过。可能是什么导致了这个?或者我应该采取哪些进一步的调试步骤?

更新

问题不在于调用exec(或shell_exec)本身,因为我可以调用父脚本,然后通过CLI从exec调用主脚本。只有当我尝试通过网络执行时才会出现问题。

1 个答案:

答案 0 :(得分:0)

有些评论是在正确的轨道上。在与我的托管公司讨论这个问题后,看起来他们在120秒的CPU时间后就会杀死脚本。这就是为什么我没有从PHP获得任何时间限制错误消息,并且实际执行时间不一致。

我的解决方案是将其重构为cron作业,服务器允许更长的限制。谢谢大家的建议。