首先很抱歉发布一个似乎已经被砸死的问题。但是,我所审查的问题都没有帮助我解决我的具体问题。
我已经构建了一个在PHP中运行大量数据处理例程的Web应用程序(即MySQL查询,计算等)。
根据提供给应用程序的数据量,此处理可能需要相当长的时间,因此脚本需要在服务器端运行并独立于Web前端。
然而,有一个问题。只要通过cgi调用脚本,我似乎无法控制脚本执行时间限制。
当我通过SSH和命令行运行脚本时,无论处理数据多长时间都能正常工作。
但是如果我在通过网络服务器调用的php脚本中使用exec()
命令,我总是在大约45秒后得到错误End of script output before headers
。
我想找到一个独立于cgi启动脚本的解决方案,而不是必须摆弄服务器设置(在可移植性方面是一场噩梦)。
有什么建议吗?
答案 0 :(得分:2)
不要直接从网站(AKA,直接从Apache)执行长脚本,因为正如您所提到的,它会阻塞直到它完成并可能超时。相反,使用网站来安排立即运行的作业(执行长脚本)。
以下是您可以如何做到这一点的基本概要:
job_id
,processing_status
,run_start_time
以及更多相关字段run_start_time
的作业,请使用exec()
或其他命令执行程序运行它。这样命令就会超时,因为它不是由Apache运行,而是由cron守护进程运行。