zoukankan      html  css  js  c++  java
  • php-cgi和php-fpm,Windows环境下解决Nginx+php并发访问阻塞问题。

    php-cgi 是运行php,
    php-fpm是守护php-cgi进程

    nginx配置目录运行php
            location  ~ .php$
            {
                    root /var/www/html;
                    fastcgi_index index.php;
                    fastcgi_pass 127.0.0.1:9000;
                    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                    include fastcgi_params;
            }

    配置弄好了,我意思是,nginx与php-cgi通信有3种方式吧?

    1、nginx通过php-fpm与php-cgi联系;
    2、nginx通过spawn-fcgi与php-cgi联系;
    3、直接与php-cgi联系;(当然这个方法我还不理解,甚至不确定有没有这个实现)

    php-fpm没用过 ,我用spawn-fcgi 。
    守护也就是当你杀死php-cgi这进程。spawn-fcgi管理器会平滑从新生成新的进程(实验过)
    性能方面 , 很多人用php-fpm ,我图方便就用了spawn-fcgi.
    直接使用php-cgi,问题挺多。比如进程无辜消失等。

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

      linux下是没问题,因为是php-fpm,而Windows下是fastcgi,它不会自动去启动fastcgi进程。所以只能一个一个排队,但是如果用curl去get本地文件,那么这个队就排不明白堵死了。

            但是基本上,我们在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会自动连接其他的进程端口。就可以保证开发调试使用了。

    windows下 解决PHP-CGI 进程崩溃

    https://www.jianshu.com/p/1f2d4b1ca10d

  • 相关阅读:
    redis 系列27 Cluster高可用 (2)
    redis 系列26 Cluster高可用 (1)
    redis 系列25 哨兵Sentinel (高可用演示 下)
    redis 系列24 哨兵Sentinel (中)
    redis 系列23 哨兵Sentinel (上)
    (网页)jQuery判断checkbox是否选中的方法
    (后端)swagger
    (其他)2018下半年目标
    (后端)Sql Server日期查询-SQL查询今天、昨天、7天内、30天(转)
    (网页)HTML中INPUT type="date"标签如何赋值注意问题(转)
  • 原文地址:https://www.cnblogs.com/as3lib/p/9428204.html
Copyright © 2011-2022 走看看