【发布时间】:2016-08-02 14:50:54
【问题描述】:
是否可以让nginx触发一个php-fpm进程,然后关闭nginx worker并快速返回一个状态为200的空页面?
我有一些缓慢的 php 进程,需要每周启动几次。它们每个可能需要 3 到 4 分钟。我用cron manager site 触发它们。 php 进程在开始时会写入一个锁定文件,当该进程完成时会发送一封电子邮件,最后会删除锁定文件。
在this guide 之后,在我的 php-fpm 工作池中,我有这个:request_terminate_timeout = 300,在我的 nginx 站点配置中我有 fastcgi_read_timeout 300;
它有效,但我不在乎屏幕上的结果。而且我使用的cron服务有5秒的时间限制,反复超时后,它会禁用作业。
是的,我知道我可以在 php 中 fork 一个进程,让它在后台运行,然后返回 200 给 nginx。是的,我可以支付和升级我的 cron 服务。尽管如此,无论如何,这将是一件有趣且有用的事情。
那么,这是可能的,还是 php-fpm 需要一个开放且“实时”的套接字?我问这个是因为在上面提到的“增加你的超时时间”页面上,一个答案说
“三个中最低的。是线链。Nginx->PHP-FPM->PHP。谁死 首先将打破链条”。
换句话说,这是否意味着我永远不能“触发”一个进程,然后关闭触发器的 nginx 部分?
【问题讨论】: