国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

[已解決] 關(guān)于windows+nginx+php配置問題,現(xiàn)在接口請求會阻塞

ken124

問題描述

Windows Server 2022 Datacenter
nginx 1.22
php ts 8.3
session用的是redis 5.0.14.1,
代碼框架用的是thinkphp5.0

具體的現(xiàn)象是同一個會話請求時, 前面的請求處理會阻塞,下一個異步進(jìn)來的請求,
不同會話之間不會相互阻塞

php API 測試的代碼很簡單

{
    function test(){
        echo "hello world";
    }

    function sleep1(){
        //單存輸出 <pre> 標(biāo)簽方便測試
        pre();
        //直接關(guān)閉session
        session_write_close();
        if (session_status() === PHP_SESSION_ACTIVE) {
            echo_ln("session 開啟了");
        } else {
            echo_ln("session 沒啟動");
        }

        // 在需要的地方檢查session_write_close()是否被調(diào)用
        if (session_status() === PHP_SESSION_ACTIVE && !headers_sent()) {
            // 如果沒有輸出到瀏覽器并且Session處于活動狀態(tài),則調(diào)用session_write_close()
            // session_write_close();
            echo_ln("session 沒關(guān)閉");
        }

        // echo_ln 單存的在 輸出語句后面補上換行符
        echo_ln( "strat:" . time() );
        sleep(10);
        echo_ln( "end:" . time() );
    }
}

同一個瀏覽器開兩個標(biāo)簽頁,手動的,幾乎同時刷新,會發(fā)現(xiàn)第二個被刷新的頁面一定比前一個慢10秒才開始執(zhí)行
已經(jīng)配置過 php.ini , nginx.conf

nginx.conf


#user  nobody;
worker_processes  8;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

events {
    worker_connections  1024;
    multi_accept on;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                     '$status $body_bytes_sent "$http_referer" '
                     '"$http_user_agent" "$http_x_forwarded_for"';

    log_format detailed '$remote_addr - $remote_user [$time_local] "$request" '
                   '$status $body_bytes_sent "$http_referer" '
                   '"$http_user_agent" "$http_x_forwarded_for" '
                   'upstream: $upstream_addr';

    # access_log  logs/access.log  main;
    access_log  logs/access.log detailed;

    server_names_hash_bucket_size 128;
    client_header_buffer_size 32k;
    large_client_header_buffers 4 32k;
    client_max_body_size 8m;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    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;

    #為了讓nginx在windows系統(tǒng)下支持高并發(fā)處理fastcgi
    #手動添加多個監(jiān)聽ip
    #加多少個監(jiān)聽ip就表示加多少監(jiān)聽進(jìn)程協(xié)助處理請求
    #直接加32個
    upstream phpfastcgi_proxy{
        #最少連接數(shù)負(fù)載均衡
        least_conn;
        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 127.0.0.1:9004;
        # server 127.0.0.1:9005;
        # server 127.0.0.1:9006;
        # server 127.0.0.1:9007;
        # server 127.0.0.1:9008;
        # server 127.0.0.1:9009;
        # server 127.0.0.1:9010;
        # server 127.0.0.1:9011;
        # server 127.0.0.1:9012;
        # server 127.0.0.1:9013;
        # server 127.0.0.1:9014;
        # server 127.0.0.1:9015;
        # server 127.0.0.1:9016;
        # server 127.0.0.1:9017;
        # server 127.0.0.1:9018;
        # server 127.0.0.1:9019;
        # server 127.0.0.1:9020;
        # server 127.0.0.1:9021;
        # server 127.0.0.1:9022;
        # server 127.0.0.1:9023;
        # server 127.0.0.1:9024;
        # server 127.0.0.1:9025;
        # server 127.0.0.1:9026;
        # server 127.0.0.1:9027;
        # server 127.0.0.1:9028;
        # server 127.0.0.1:9029;
        # server 127.0.0.1:9030;
        # server 127.0.0.1:9031;
    }

    #開發(fā)
    server {
        listen       8000;
        server_name  location;

        index index.php;
        root D:\webapp\development\public;

        location / {
            if (!-e $request_filename){
                rewrite ^/(.*)$ /index.php/$1 last;
            }
        }

        location ~ .*\.php {
            if (!-e $document_root$fastcgi_script_name) {
                ##此處直接返回404錯誤
                ##你也可以rewrite 到新地址去,然后break;
                return 404;
            }
            #修改監(jiān)聽ip 為 phpfastcgi_proxy
            fastcgi_pass   phpfastcgi_proxy;
            fastcgi_index  index.php;
            fastcgi_split_path_info  ^(.+\.php)(.*)$;
            fastcgi_param PATH_INFO $fastcgi_path_info;

            fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        # location / {
        #     root   html;
        #     index  index.html index.htm;
        # }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

    server {
        listen       8001;
        server_name  location;

        index index.php;
        root D:\webapp\development2\public;

        location / {
            if (!-e $request_filename){
                rewrite ^/(.*)$ /index.php/$1 last;
            }
        }

        location ~ .*\.php {
            if (!-e $document_root$fastcgi_script_name) {
                ##此處直接返回404錯誤
                ##你也可以rewrite 到新地址去,然后break;
                return 404;
            }
            fastcgi_pass   phpfastcgi_proxy;
            fastcgi_index  index.php;
            fastcgi_split_path_info  ^(.+\.php)(.*)$;
            fastcgi_param PATH_INFO $fastcgi_path_info;

            fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        # location / {
        #     root   html;
        #     index  index.html index.htm;
        # }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

    #生產(chǎn)
    server {
        listen       88;
        server_name  location;

        index index.php;
        root D:\webapp\production\public;

        location / {
            if (!-e $request_filename){
                rewrite ^/(.*)$ /index.php/$1 last;
            }
        }

        location ~ .*\.php {
            if (!-e $document_root$fastcgi_script_name) {
                ##此處直接返回404錯誤
                ##你也可以rewrite 到新地址去,然后break;
                return 404;
            }
            fastcgi_pass   phpfastcgi_proxy;
            fastcgi_index  index.php;
            fastcgi_split_path_info  ^(.+\.php)(.*)$;
            fastcgi_param PATH_INFO $fastcgi_path_info;

            fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        # location / {
        #     root   html;
        #     index  index.html index.htm;
        # }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

目前尚不知是php-cgi在windows系統(tǒng)下的根本性特性還是我配置哪里寫錯
有查到一個說法,windows下只有apache才能讓php不阻塞執(zhí)行,但是尚未驗證,
請有經(jīng)驗的同行幫忙解答問題

問題解決

結(jié)論如一樓評論,需要精確控制每次session變量的啟動和關(guān)閉
然后我的php舉例并不能模擬實際場景
一般情況下的阻塞場景,基本是請求數(shù)據(jù)庫或其他應(yīng)用程序,比較耗時
而 sleep函數(shù) 比較特殊,是真的直接阻塞整個進(jìn)程或線程,原理不深究

995 1 0
1個回答

six

php-fpm 同一會話session訪問是串行的,上一個請求需要結(jié)束session后,下一個請求才能訪問session。結(jié)局方案,需要的時候才用session_start()開啟session,session不需要再使用了立刻執(zhí)行session_write_close()關(guān)閉session

年代過于久遠(yuǎn),無法發(fā)表回答
??