【发布时间】:2016-09-22 14:25:58
【问题描述】:
我有一个 php 文件,它从 URL 中接收几个参数,然后运行一个 exec 命令,我想在其中等待并显示 exec 的结果。此 exec 命令大约需要 20-30 秒才能完成。它永远不会完成,因为网页只是收到一个 nginx 502 bad gateway 错误(超时)。而不是扩展 nginx 超时错误,因为长时间挂起连接是不好的做法,我如何在后面运行 php 的 exec然后在完成后将其返回到页面上? 或者有没有更好的方法来完成这个而不使用 php?
【问题讨论】:
-
你必须告诉 nginx 这个特定的脚本是长时间运行的,所以它不会超时。
-
给我们一些更多的细节和一个例子。我最初的想法是您需要一个 cron 作业和一个用于网页显示的缓存
-
@MarcB 我怎样才能用 nginx 挑出这个脚本并告诉它不要超时?我在 nginx 和 php-fpm confs 中尝试了各种设置,但没有成功。
-
你需要异步运行exec srypt,例如在python中我使用celery,还有一个php客户端:github.com/gjedeer/celery-php