装了phpstudy,为了方便启动 自己写了个bat内容是这样的

@ECHO OFF
echo 正在停止Nginx进程……
nginx\Process -k nginx.exe
nginx\Process -k nginx.exe
echo 正在停止PHP(FastCGI)进程……
nginx\Process -k php-cgi.exe
nginx\Process -k mysqld.exe
echo 正在启动Redis进程…..
nginx\Process -k redis-server.exe

echo 正在启动php(FastCGI)进程……
php540\RunHiddenConsole.exe  php540\php-cgi.exe -b 127.0.0.1:9000 -c php540\php.ini
echo .
echo .
php540\RunHiddenConsole.exe  php540\php-cgi.exe -b 127.0.0.1:9000 -c php540\php.ini
echo .
echo .
php540\RunHiddenConsole.exe  php540\php-cgi.exe -b 127.0.0.1:9000 -c php540\php.ini

echo 正在启动MySQL进程……
php540\RunHiddenConsole.exe  mysql\bin\mysqld.exe
echo .
echo .

echo 正在启动Nginx进程……
cd nginx
RunHiddenConsole.exe nginx.exe
echo .
echo .

REM 启动redis
echo 正在启动Redis进程……
cd ..\redis
RunHiddenConsole.exe redis-server.exe redis.conf
echo .
echo .

exit

 

其中php540是我在网上现在的php5.4.0ts版的,ps 一件包可以随意升级的php

另外有两个软件  process 和 RunHiddenConsole.exe 在这里下载nginx

然后放到nginx目录下  并且拷贝一份RunHiddenConsole.exe 到php540目录下

每次开机就启动这个bat是没有问题的。但是有时候打开其他软件php就起不来了。因为php用的是9000端口。我怀疑是此端口被占用了  用cmd查看端口命令   netstat -aon|findstr “9000”

TCP    0.0.0.0:9000           0.0.0.0:0              LISTENING       18204
TCP    [::]:9000                   [::]:0                     LISTENING       18204

可以看到9000端口被pid为18204的软件占用。

用任务管理器看到pid为eclipse占用。然后关闭eclipse 再先启动此bat  再打开eclipse就没问题了

 

测试环境运行很OK,但是放到线上就偶尔出现502错误。

Nginx 502 Bad Gateway的含义是请求的CGI已经执行,但是由于某种原因没有执行完毕而导致CGI进程终止。

Nginx 504 Gateway Time-out的含义是所请求的网关没有请求到,简单来说就是没有请求到可以执行的CGI。

我们这边应该都是部分耗时操作引起了超时,因此需要增大NG的超时时间。
NG的http节
fastcgi_connect_timeout 1800;
fastcgi_send_timeout 1800;
fastcgi_read_timeout 1800;
fastcgi_buffer_size 1024k;
fastcgi_buffers 32 1024k;
fastcgi_busy_buffers_size 2048k;
fastcgi_temp_file_write_size 2048k;

相应的默认参数
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;