PHP Curl随机挂起,没有错误

PHP Curl随机挂起,没有错误,curl,openssl,ubuntu-14.04,freeze,php-5.5,Curl,Openssl,Ubuntu 14.04,Freeze,Php 5.5,问题是针对开发人员、系统管理员和面临此问题的人员的。 任何帮助都将不胜感激。 我有4个运行的php脚本,它们执行curl从网站获取标题。一段时间后,脚本挂起(不是同时挂起)。根据我的日志,我100%确信每个脚本在curl_exec()函数之后都会挂起 我有个卷发 CURLOPT_CONNECTTIMEOUT=120 CULLOPT_超时=120 CURLOPT_bank_REUSE=true-完成后显式关闭 CURLOPT_SSL_VERIFYPEER=false CURLOPT_SSL_VE

问题是针对开发人员、系统管理员和面临此问题的人员的。 任何帮助都将不胜感激。

我有4个运行的php脚本,它们执行curl从网站获取标题。一段时间后,脚本挂起(不是同时挂起)。根据我的日志,我100%确信每个脚本在curl_exec()函数之后都会挂起

  • 我有个卷发
  • CURLOPT_CONNECTTIMEOUT=120
  • CULLOPT_超时=120
  • CURLOPT_bank_REUSE=true-完成后显式关闭
  • CURLOPT_SSL_VERIFYPEER=false
  • CURLOPT_SSL_VERIFYHOST=false
说实话,我用参数做了很多实验,看起来一点帮助都没有。此外,重定向STDRR到文件中的冗长模式并不是解决方案,因为它挂在卷曲的中间,永远不会到达执行的末尾。无法将任何日志应用于php内部的curl

然而,我做了一些系统检查

$ 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]
因为问题在旋度I内

  • 更新的php5旋度
  • 将卷曲度从7.35提高到7.40
  • 将openssl从“openssl 1.0.1f 2014年1月6日”升级为“openssl 1.0.2 2015年1月22日”
每次也要重新启动。所有的解决方案都无济于事

关于操作系统:

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)

另一个问题是:若脚本挂起,则无法获取其状态、杀死它并重新启动。一切都表明它在工作,唯一的日志显示该过程什么也不做


亲切问候

Hi@Oleg Matei-你有没有想出解决方案或解决办法?我唯一的解决方案是在需要时使用另一个脚本监视、终止和启动进程。您可以手动或自动执行,但需要确保终止的流程不会破坏数据一致性。