在windows中开发LNMP项目时,会遇到同一台机器上有多个套php代码,如果直接用php通过curl访问其他项目时会提示超时。
经过尝试,可以用如下方式解决!
先查看nginx日志时看到如:
192.168.1.189 - - [17/Oct/2016:14:34:17 +0800] "GET /proxy/data/10002?asjdflasjkld=a12&sign=4033d03c16083e054f118a46247554653473fde0 HTTP/1.1" 499 0 "-" "-"
搜了下是nginx取消了请求,原因是请求超时,即访问php时发生了"死锁"的问题(我自己的话)。要解决此问题请参考如下配置:
假设本地hosts文件类似:
127.0.0.1 a.com
127.0.0.1 b.com
从a.com 访问 b.com
nginx配置如下,注意红字部分:
server{
listen 80;
server_name a.com;
location / {
rewrite ^(.*)$ /index.php?$1 break;
index index.php;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
server{
listen 8001;
server_name b.com;
location / {
rewrite ^(.*)$ /index.php?$1 break;
index index.php;
fastcgi_pass 127.0.0.1:9001;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
这样两个项目(端口80和8001)分别连接php-cgi的9000及9001端口。注意:nginx可以都设成80,但php必须分开。
原因,windows下phpcgi没有多线程!linux中cgi启动时可以配置线程数的,所以没问题。(内因不研究了,问百度)
解决思想:
1.a.com启动后连接了9000端口,b.com启动后连接9001端口,二者不会导致cgi资源被占用而产生的超时问题。
2.在php中调用curl时需要配置 CURLOPT_HTTPHEADER
$url = 'http://127.0.0.1:8001'; // b的域名 $ch = curl_init($url); curl_setopt_array( $ch, array( CURLOPT_HTTPHEADER=>array( "Host: b.com" ), // 其他参数 ) ); $ret = curl_exec($ch); // 处理结果
如此这般即可解决本地hosts映射后,curl能顺利找到相关网站的问题!
启动和停止phpcgi的cmd.zip文件请参考附件。
RunHiddenConsole这个大家可以看看,这个在用非集成环境(如phpStudy)时用于隐藏nginx的命令窗口。
相关推荐
新增PHP5插件ImageMagick、XCache、memcache、curl、MCrypt。 DebianLNMP一键安装LNMP状态管理: 安装完成后,管理Nginx、PHP5、MySQL已经有标准管理命令,其状态管理沿用了Linux通用性。 Nginx状态管理 /etc/init.d...
主要介绍了一次nginx 504 Gateway Time-out错误排查、解决记录,经过反复检查,发现造成这个问题的原因就是PHP的CURL没有设置超时时间,解决办法只要设置超时时间或者修改一下nginx的配置即可解决,需要的朋友可以参考下
cURL PHP扩展 MBString PHP扩展 GD PHP扩展 IMAP PHP扩展 Json PHP扩展 FileInfo PHP扩展 Exif PHP扩展 Zip PHP扩展 更新日志v1.4 新增:渐进式Web应用程序(PWA) 新增:社交媒体登录(40多个社交网络) 新增:...
Curl :Php Multi Curl Test =>如果您有庞大的apache2日志文件,或者不需要运行JavaScript或Ajax调用,则为一个很好的解决方案 phpunitCurl :phpunit卷曲测试 PhpunitSelenium :允许您在需要测试的定义的浏览器上...
大蓝仪表盘BigBlueDashboard (BBD) 是 BigBlueButton ( ) 的基于 PHP 的前端依赖关系安装 BigBlueButton 后,您需要添加这些 apt-get install php5-cgi php5-curl php5-dev php-pearpecl install redisNginx 配置将...
运行程序PHP必须5.0以上 CURL组件必须启用 假静态和动态请自行修改 run.php 把 define('KKKK_REWRITE', false); 改成 define('KKKK_REWRITE', true); 网站标题和关键字也在里面修改 播放加载前那个广告在 img\...
2.使用Windows服务器,用apache/iis,禁止使用nginx哦。 3.推荐使用Linux服务器,web服务器随意。 4.服务器最好具有ZipArchive、Curl等功能。 5.文件存储位置要有写入权限。 安装须知 默认访问安装目录的drawer.php...
apt-get install nginx apache2 erlang git postgresql php5 php5-pgsql php5-gd php-log make curl inotify-tools 您不必修改 apache 和 nginx 的系统配置即可使其工作。 有一些脚本可以在非标准端口上启动你自己...
Drawer是一款基于JQuery+AJAX+PHP...2019-11-30新增:1、检查更新2、文本文件对比优化:1、提高复制/移动文件的速度2、提高输出文件列表的速度3、优化上传文件错误的提示信息4、登录密码采用加密传输,以及加密存储本地
修复发送的错误请求。 该工具根据。 到目前为止包装的模块有: 有效载荷商店 Shell生成器(PHP / ASP / JSP / JSPX / CFM) 有效负载编码器和解码器(带有\ x分隔符的Base64 / Rot13 / Hex / Hex /带有0x前缀的...