大错社区

 找回密码
 免费注册

QQ登录

只需一步,快速开始

[Nginx] Windows环境下解决Nginx+php并发访问阻塞问题。

[复制链接]
admin 发表于 2019-1-9 14:19:23 | 显示全部楼层 |阅读模式
正常的配置情况下,window的php-cgi是不会出现多线程/子进程的,例如以下配置
fastcgi_pass   127.0.0.1:9000;
这时也就意味着当二个php文件同一时候请求解析时,就会出现堵塞处理,处理时间就会是a.php+b.php,而不是并行,是串行时间了.
如a.php
sleep(100);echo 1;
b.php
echo 2;
先执行a.php,100秒后输出1.在执行a.php的同一时候,执行b.php,2却出如今100秒以后.如果...却不是一执行就立马出现,由于上面的配置受影响导致解析是串行时间了.

NGINX跑在windows下运行PHP就是鸡肋、建议换为Apache或IIS!!!

linux下是没问题,因为是php-fpm,而Windows下是fastcgi,它不会自动去启动fastcgi进程。所以只能一个一个排队,更多答案请自行百度搜索。

但是基本上,我们在Windows下都是开发调试用,好在也用不了太多。所以只能手动建立fastcgi进程去让Nginx连接。

首先配置Nginx.conf,在http下加入代码

  1. upstream fastcgi_proxy {
  2.         server 127.0.0.1:9000;
  3.         server 127.0.0.1:9001;
  4.         server 127.0.0.1:9002;
  5.         server 127.0.0.1:9003;
  6.         server 127.0.0.1:9004;
  7.     }
复制代码
然后修改location ~ \.php$中的fastcgi_pass

fastcgi_pass   fastcgi_proxy;

修改后,当127.0.0.1:9000阻塞时,Nginx会自动连接其他的进程端口。就可以保证开发调试使用了。
  1. E:/php/php-cgi.exe -b 127.0.0.1:9001 -c E:/php/php.ini
复制代码


您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

QQ|Archiver|手机版|小黑屋|大错网络

GMT+8, 2019-7-16 16:13 , Processed in 0.056575 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表