所以我有一个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
我尝试多次修复此问题但没有结果。有什么想法吗?
此外,睡眠功能不会计入脚本执行超时,因此它会一直持续到我重新启动为止。
答案 0 :(得分:1)
我忘记了这个问题,但解决了我的问题。这是ParallelCurl library打破。它使用nanosleep来检查下载是否完成,nanosleep阻止脚本达到超时限制。用睡眠取代纳米睡眠的实例解决了这个问题。