php nginx curl 超时,问题总结:php-curl在nginx中访问超时,在CLI环境正常

为了测试本地php代码,由于电脑内存限制,无法运行虚拟机,于是搭建了本地web服务调试环境Windows、Nginx、php-cgi、mysql

由于xdebug调试服务9000端口已占用,所以php-cgi使用了9001端口,在nginx配置中需要做响应更改

1 fastcgi_pass 127.0.0.1:9001;

启动服务:

nginx> start /b nginx.exe

nginx> net startmysql56

nginx> cdpath_to_php

php> php-cig.exe -b 127.0.0.1:9001

停止服务

php> Ctrl+C^

php> cdpath_to_nginx

nginx> netstop msyql56

nginx> nginx.exe -s stop

一直以来跑的都很顺畅,今天突然遇到了问题,发现在php中有curl请求的时候,通过nginx访问请求会超时,在CLI环境中正常。

因为本地只启了一个php-cgi进程,在用户访问一个php页面的时候nginx已将该进程占用,在该进程又发起http请求时,nginx发现这个仅有的进程已被占用而造成阻塞,就这样造成了死锁,一直到超时。

解决办法就是启动多个php-cgi进程,答主给出了一个他写的python管理脚本:spawn-php.py,下载后运行发现找不到win32process模块,于是又到百度搜索win32process安装包,在杨青个人博客上看到了地址,博主也纳闷在百度搜索win32process安装包,总是出现一些不相关的东西,于是就把地址记录了下来。

下载对应本地python版本的安装包,安装完成,运行spawn-php.py脚本时遇到了几个小问题,脚本是为python2写的,本地装的是python3.4,所以有两点需要改下:

print作为函数使用,要加上括号

dict没有iteritems属性了,直接使用items属性即可

运行脚本 spawn-php.py 9001 10 启动10个php-cgi进程127.0.0.1:[9001-9010]。

20180920043233196498.png

修改nginx配置

1 upstream php_farm {2 server 127.0.0.1:9001 weight=1;

3 server 127.0.0.1:9002 weight=1;

4 server 127.0.0.1:9003 weight=1;

5 server 127.0.0.1:9004 weight=1;

6 server 127.0.0.1:9005 weight=1;

7 server 127.0.0.1:9006 weight=1;

8 server 127.0.0.1:9007 weight=1;

9 server 127.0.0.1:9008 weight=1;

10 server 127.0.0.1:9009 weight=1;

11 server 127.0.0.1:9010 weight=1;

12 }13 # ...

14 fastcgi_pass php_farm;

重新载入nginx配置

1 nginx> nginx.exe -s reload

运行正常!

原文:http://www.cnblogs.com/gudaojuanma/p/php-curl-nginx-timeout-cli-work.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值