问题出在开发人员,系统管理员和遇到此问题的人身上。 任何帮助将不胜感激。
我有 4运行php脚本,执行curl以从网站获取标题。一段时间后脚本挂起(并非所有时间都在同一时间)。我确信100%的每个脚本根据我的日志在curl_exec()函数后挂起。
说实话我用参数进行了很多实验,看起来根本没用。此外,将stderr重定向到文件的详细模式不是解决方案,因为它在curl中间挂起并且永远不会到达执行结束。没有日志可以应用于在php内部卷曲。
但我做了一些系统检查。
$ sudo strace -p 8824
poll([{fd=5, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout)
clock_gettime(CLOCK_MONOTONIC, {124050, 654708486}) = 0
clock_gettime(CLOCK_MONOTONIC, {124050, 654743020}) = 0
clock_gettime(CLOCK_MONOTONIC, {124050, 654776675}) = 0
clock_gettime(CLOCK_MONOTONIC, {124050, 654810241}) = 0
clock_gettime(CLOCK_MONOTONIC, {124050, 654844540}) = 0
poll([{fd=5, events=POLLIN}], 1, 1000) = 0 (Timeout)
clock_gettime(CLOCK_MONOTONIC, {124051, 656031748}) = 0
clock_gettime(CLOCK_MONOTONIC, {124051, 656071876}) = 0
poll([{fd=5, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout)
clock_gettime(CLOCK_MONOTONIC, {124051, 656144591}) = 0
clock_gettime(CLOCK_MONOTONIC, {124051, 656178423}) = 0
clock_gettime(CLOCK_MONOTONIC, {124051, 656213407}) = 0
clock_gettime(CLOCK_MONOTONIC, {124051, 656248064}) = 0
clock_gettime(CLOCK_MONOTONIC, {124051, 656282940}) = 0
看起来它已在文件描述符fd = 5
中重试$ sudo ls -lh /proc/8824/fd
total 0
lr-x------ 1 se se 64 Feb 19 11:39 0 -> /dev/null
l-wx------ 1 se se 64 Feb 19 11:39 1 -> /var/www/html/SE/logs/tweetscan.1502191014.4431.log
l-wx------ 1 se se 64 Feb 19 11:39 2 -> /var/www/html/SE/logs/tweetscan.1502191014.4431.log
lrwx------ 1 se se 64 Feb 19 11:39 3 -> /var/lib/php5/sess_rlbj4aog6gukb725ao3nks2084
l-wx------ 1 se se 64 Feb 19 12:09 4 -> /tmp/curl_8824
lrwx------ 1 se se 64 Feb 19 12:09 5 -> socket:[688848]
因为问题在于卷曲我
每次重启都会。这些解决方案都没有帮助。
关于操作系统:
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04.2 LTS"
NAME="Ubuntu"
VERSION="14.04.2 LTS, Trusty Tahr"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 14.04.2 LTS"
VERSION_ID="14.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
PHP 5.5.9-1ubuntu4.6
卷曲7.40.0
OpenSSL 1.0.2 2015年1月22日
Apache / 2.4.7(Ubuntu)
另一个问题是:如果脚本挂起,则无法获取其状态,将其终止并重新启动。一切都表明它正在运行,唯一的日志表明该过程什么都不做。
亲切的问候