PHP-FPM永远等待

时间:2014-05-10 00:05:41

标签: nginx php

所以我有一个php-fpm + nginx + mongodb堆栈运行良好,不幸的是当我取消一个页面加载它会永远锁定我。 我的脚本设置了超时但是当我通过cmd取消脚本的执行时,这是一个问题。它不会立即取消,而是进入无限的睡眠循环。

这意味着尽管执行时间很短,但我已经让服务器反复睡了几秒钟。 它现在所做的就是:

epoll_wait(9, {}, 1, 1000)              = 0
epoll_wait(9, {}, 1, 1000)              = 0
epoll_wait(9, {}, 1, 1000)              = 0
epoll_wait(9, {}, 1, 1000)              = 0
epoll_wait(9, {}, 1, 1000)              = 0

之前我在重新启动之前就这样做了:

nanosleep({0, 10000000}, NULL)          = 0
nanosleep({0, 10000000}, NULL)          = 0
nanosleep({0, 10000000}, NULL)          = 0
nanosleep({0, 10000000}, NULL)          = 0
nanosleep({0, 10000000}, NULL)          = 0

我尝试多次修复此问题但没有结果。有什么想法吗?

此外,睡眠功能不会计入脚本执行超时,因此它会一直持续到我重新启动为止。

1 个答案:

答案 0 :(得分:1)

我忘记了这个问题,但解决了我的问题。这是ParallelCurl library打破。它使用nanosleep来检查下载是否完成,nanosleep阻止脚本达到超时限制。用睡眠取代纳米睡眠的实例解决了这个问题。