window+nginx+php-cgi的php-cgi线程/子进程问题

见bbs

http://bbs.csdn.net/topics/390803643/close

正常的配置情况下,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秒以后.假设...却不是一运行就立刻出现,因为上面的配置受影响导致解析是串行时间了.

在google.翻了几个小时.

找到

The problem is that the PHP_FCGI_CHILDREN environment variable is ignored under windows, therefore php-cgi does not spawn children, and when PHP_FCGI_MAX_REQUESTS is reached the process terminates.

Check on PHP‘s source, file cgi_main.c, around line 1982:

#ifndef PHP_WIN32

/* Pre-fork, if required */

if (getenv("PHP_FCGI_CHILDREN")) {

char * children_str = getenv("PHP_FCGI_CHILDREN");

...

So, php with fast-cgi will **never** work on Windows.

The question is, why is forking disabled under windows?

-------------https://bugs.php.net/bug.php?id=49859-----------

得知window不支持?????

看到网上有很多人不懂怎么处理.而我的是测试服务器,觉得就算了.灵机一动.就手工的开起几个php-cgi等着吧.

于是变通方案时.

手工开起n个php-cgi等着

::window不支持 nginx的多线程,只能手工生成多个php-cgi

start "fcgi服务" /MIN  /D "%batDir%php"  php-cgi.exe -b 127.0.0.1:9000 -c "%batDir%php/php.ini"

start "fcgi服务" /MIN  /D "%batDir%php"  php-cgi.exe -b 127.0.0.1:9001 -c "%batDir%php/php.ini"

start "fcgi服务" /MIN  /D "%batDir%php"  php-cgi.exe -b 127.0.0.1:9002 -c "%batDir%php/php.ini"

start "fcgi服务" /MIN  /D "%batDir%php"  php-cgi.exe -b 127.0.0.1:9003 -c "%batDir%php/php.ini"

start "nginx服务" /MIN  /D "%batDir%nginx" nginx.exe

然后nginx的

http {

#window 不能派生子进程,只能人工配 PHP_FCGI_CHILDREN 在window不起作用的

upstream fastcgi_backend {

server 127.0.0.1:9000;

server 127.0.0.1:9001;

server 127.0.0.1:9002;

server 127.0.0.1:9003;

}

弄一个备用服务器

域名配置时,使用转发到备用服务器

server {

listen       80;

server_name  q.qq;

access_log ./../log/q.qq.access.txt;

root d:/web/www;

location ~ \.php$ {

fastcgi_pass   fastcgi_backend;

}

}

ok.同时打开4个php是可以独立解析了,并行,但是5个呢?第5个还是要等等吧..........

window+nginx+php-cgi的php-cgi线程/子进程问题

时间: 2024-10-25 07:21:35

window+nginx+php-cgi的php-cgi线程/子进程问题的相关文章

Nginx解析PHP的原理 | CGI、FastCGI及php-fpm的关系

Nginx解析PHP的原理,CGI/FastCGI以及PHP-Fpm的关系. 一.PHP+Nginx应运而生的场景.随着互联网的发展,用户对此接受面广,数据流的增大使得Web端的运行承载压力日益增大,野蛮生长在大数据时代里的WEB语言PHP也找到了比老搭档更优越的活力搭档Nginx,说到Nginx咱就一起唠一唠这其中的奥妙. 从以下几个维度来剖析一下Nginx的活力所在,当然是和解析PHP的老搭档APACHE相比而言. 性能1.1 资源占有率少,节省内存资源1.2 非阻塞式的请求处理机制给之增加

CGI Error-The specified CGI application misbehaved by not returning a complete set of HTTP headers.

运行php程序时,出现如下错误 CGI Error The specified CGI application misbehaved by not returning a complete set of HTTP headers. 出现该错误,可能是存在多个原因的,我出现该原因的问题是ZendLoader.dll版本不对,该模块需要与php的版本相对应,我的php版本为:5.3.4,后面我将php升级为5.4.5,结果就出现了该错误. 解决方法是去官网下载相对应的ZendLoader.dll就行

window nginx 启动无提示错误,却没有listen 80port

一直使用虚拟机来使用web+hostonly方式; 今天为了測试一个php平台的window系统兼容性, 在官方下载了window-nginx 1.9.1版本号; 解压到文件夹, 执行nginx.exe 訪问127.0.0.1正常; 于是改动nginx.conf把里面的server{}所有删除替换成include ./vhost/*.conf; 在conf文件夹下建立vhost文件夹同一时候从centos中复制出一个site的server conf文件出来,改动一下root指向的文件夹.保存;

window nginx 启动无提示错误,却没有listen 80端口

一直使用虚拟机来使用web+hostonly方式; 今天为了测试一个php平台的window系统兼容性, 在官方下载了window-nginx 1.9.1版本; 解压到目录, 运行nginx.exe 访问127.0.0.1正常; 于是修改nginx.conf把里面的server{}全部删除替换成include ./vhost/*.conf; 在conf目录下建立vhost目录同时从centos中复制出一个site的server conf文件出来,修改一下root指向的目录.保存; 使用nginx

Window nginx+tomcat+https部署方案 支持ios9

客户端和 Nginx 之间走的 HTTPS 通讯,而 Nginx 到 Tomcat 通过 proxy_pass 走的是普通 HTTP 连接. 下面是详细的配置(Nginx 端口 80/443,Tomcat 的端口 8080)Nginx 这一侧的配置没什么特别的: upstream localhost { #ip_hash ip_hash; server 127.0.0.1:8080; } server { listen 443; server_name localhost; ssl on; ss

window是系统杀死8080端口的线程

netstat -ano|findstr 8080 taskkill /pid 7812 /f

ubuntu下php开发环境搭建,nginx+(cgi)php5fpm+memcached+xdebug

由于只是开发环境,所以都是选择比较简单的apt-get安装方式 ,但中间也遇到一点问题. 首先安装nginx nginx的安装和配置其实很简单,nginx本身非常轻量级, 直接 sudo apt-get install nginx 就可以了 他的配置文件是在/etc/nginx/里面,网站项目路径是在/var/www里面,安装之后一定要确保nginx的启动账户有对网站目录的访问权限,否则会报错. 第二步,安装cgi linux底下的cgi程序非常多,在这里我选择的是php5-fpm 方便  在这

[转] Nginx + CGI/FastCGI + C/Cpp

接着上篇<Nginx安装与使用>,本篇介绍CGI/FASTCGI的原理.及如何使用C/C++编写简单的CGI/FastCGI,最后将CGI/FASTCGI部署到nginx.内容大纲如下: 1.     CGI 1.1.     环境变量 1.2.     标准输入 2.     FastCGI 3. nginx cgi/fastcgi 3.1. nginx + fastcgi 3.1.1. spawn-fcgi 3.1.2. 编写fastcgi应用程序 3.1.3. nginx fastcgi

php,cgi,nginx关系

nginx是服务器 什么是服务器? 例如:IIS,Apache,Nginx......主要是提供网上浏览网页的服务,应用层使用HTTP协议. CGI,FastCGI CGI全称是"公共网关接口"(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行"交谈"的一种工具,其程序须运行在网络服务器上. PHP PHP属于一种服务端脚本语言 三者关系: 服务器可以解析HTTP协议,服务器接收一个请求,就会返回一个响应,例如一个HTM