亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > WEB服務 > 正文

PHP在Nginx下主動斷開連接ConnectionClose與ignore_user_abort后臺運行

2020-03-22 18:08:52
字體:
來源:轉載
供稿:網友
  • 這兩天弄個PHP調用 SVN 同步 update 多臺服務器更新的程序,為了避免 commit 的時候不會被阻塞卡半天得想個辦法只請求觸發,而不需要等待程序 update 完成返回結果這樣耗時太長,所以研究過了下如何讓PHP主動斷開連接的方法。搞了一下午,發現很多問題,還好最終還是弄出來了,主要是 Nginx 太坑。。


    廢話不多說,下面上代碼:

    PHP 在 Nginx 下主動斷開連接


    /** * 主動斷開與客戶端瀏覽器的連接 * 如果是 Nginx 服務器需要輸出大于等于 fastcgi_buffer_size 緩存的數據才能即時輸出 header 斷開連接, 若還是不行可嘗試關閉 gzip * 如: fastcgi_buffer_size 64k; 即: 需要 64*1024 字符(可多不可少), * 可使用 str_repeat(' ', 65536); 另外 str_repeat('          ', 6554); 這種方式其實生成速度更慢 * @param null|string $str 當前輸出的內容, 若無需輸出則設置為空 */html' target='_blank'>public function connectionClose($str = null) {    $str = ob_get_contents() . $str;    // 若實際輸出內容長度小于該值將可能導致主動斷開失敗    header('Content-Length: '. strlen($str));    Header::connectionClose();    ob_start();    echo $str;    ob_flush();    flush();}

    補充說明下:

    對于 apache 一般沒什問題,我一開始在 windows 上用的 xampp 調試的 沒發現什么問題,結果到服務器上是 Nginx ,死活不行,崩潰了一下午,后來才反映過來是 Nginx 的 fastcgi_buffer 的問題。

    各種情況測試了N多次,應該沒什么 BUG 了。。。


    另外再說說 ignore_user_abort() 函數的問題

    當瀏覽器關閉后,決定程序是否還會在后臺繼續執行,(下圖的例子中,你在測試時不一定非要設置為永不超時 limit 0 ,設置一兩分鐘就行了,否則可能重啟 HTTP 服務需要很長時間)


    PHP ignore_user_abort 后臺運行


    簡單來說,如果你要用戶瀏覽器關閉后還需要程序繼續執行,那么你必須加上下面這句代碼:

    ignore_user_abort(true);

    但根據你后面程序(主要是 while 死循環)的情況不同而有些許不同:

    一般在程序中你可以監控連接狀態進行控制:

    $isAborted = connection_aborted();$status = connection_status();if (0 !== $status || $isAborted) {    break;}

    但這兩個函數要想正常工作得有個前提,就是你的程序必須要有輸出內容,且大于當前WebServer 的輸出緩存,這樣才會起作用。

    如果你只是簡單的輸出一個空格 echo ’ ‘; 可能得循環幾千次才會判斷到,所以為了更即時的檢測到狀態你必須每次循環時輸出足夠多的內容才會觸發狀態檢測。

    所以這里也經常會遇到一個問題:當瀏覽器斷開后,即使沒有使用 ignore_user_abort(true); 但因為沒有任何輸出,導致程序仍然會繼續執行,死循環會一直跑,如果設置了超時那還好,否則就真死掉了。


    下面貼上測試代碼(貼個圖主要是為了防盜 嘿嘿~)
    set_time_limit(0);ignore_user_abort(true);while (1) {    echo str_repeat(' ', 65536);    $isAborted = connection_aborted();    $status = connection_status();    file_put_contents('test.txt', 'time: '. time() .'; abroted:'. $isAborted .'; status: '. $status);    if (0 !== $status || $isAborted) {        break;    }    sleep(2);}

    你可以試試注釋掉這句
    // echo str_repeat(’ ‘, 65536);
    另外
    set_time_limit(0); 最好也別用 0

    PHP編程

    鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

  • 發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
    这里只有精品视频| 亚洲国产日韩精品在线| 中文字幕精品在线视频| 欧美精品videosex极品1| 色综合色综合网色综合| 国产精品视频精品视频| 丝袜亚洲欧美日韩综合| 久久国产精品久久久久久久久久| 国产成人高潮免费观看精品| 欧美有码在线观看视频| 国产精品大陆在线观看| 日本高清不卡在线| 国产成人小视频在线观看| 亚洲娇小xxxx欧美娇小| 亚洲一区二区久久久| 欧美激情精品久久久久久大尺度| 欧美日韩国产123| 日本欧美国产在线| 在线观看国产欧美| 2019最新中文字幕| 在线观看欧美www| 人人澡人人澡人人看欧美| 欧美日韩综合视频| 在线看福利67194| 亚洲人精品午夜在线观看| 欧美精品在线看| 亚洲影院色无极综合| 亚洲精品国产成人| 日韩精品在线视频观看| 欧美精品第一页在线播放| 亚洲视频专区在线| 国产欧美精品一区二区三区-老狼| 另类色图亚洲色图| 九色成人免费视频| 日韩中文字幕视频在线| 久久亚洲精品毛片| 亚洲美女精品成人在线视频| 成人高h视频在线| 久久国产精品视频| 国产精品久久久久免费a∨| 国产精国产精品| 欧美亚洲在线播放| 国产亚洲人成a一在线v站| 懂色av中文一区二区三区天美| 69精品小视频| 国产精品普通话| 精品激情国产视频| 欧美日韩国产精品一区二区不卡中文| 777777777亚洲妇女| 亚洲国产一区二区三区在线观看| 久久久亚洲欧洲日产国码aⅴ| 国产91久久婷婷一区二区| 亚洲国产欧美久久| 亚洲精品www久久久久久广东| 久久久精品久久久久| 91在线观看免费| 色青青草原桃花久久综合| 欧美性极品xxxx娇小| 欧美激情在线观看| 日本aⅴ大伊香蕉精品视频| 欧美怡春院一区二区三区| 亚洲午夜未满十八勿入免费观看全集| 555www成人网| 亚洲乱码国产乱码精品精天堂| 国内精品小视频| 中文字幕九色91在线| 精品国产区一区二区三区在线观看| 91香蕉亚洲精品| 久久久久久一区二区三区| 国产成人精品在线观看| 欧美在线国产精品| 国产成人精品视频在线观看| 欧美精品久久久久久久久久| 久久99热这里只有精品国产| 国产精品久久久久久久av大片| 欧美肥臀大乳一区二区免费视频| 欧美与黑人午夜性猛交久久久| 国产亚洲欧洲高清| 亚洲aa在线观看| 欧美xxxx综合视频| 国产精品最新在线观看| 亚洲欧洲日产国码av系列天堂| 国产精品久久久久久久一区探花| 69**夜色精品国产69乱| 欧美一级大片视频| 久久国产精品免费视频| 亚洲成色999久久网站| 亚洲免费视频网站| 国产精品久久精品| 国产亚洲精品一区二区| 日韩免费观看视频| 在线观看国产成人av片| 夜夜嗨av一区二区三区四区| 91国内揄拍国内精品对白| 欧美日韩精品在线播放| 成人有码在线视频| 国产精品美乳一区二区免费| 成人性生交大片免费看视频直播| 亚洲在线www| 午夜精品www| 日韩欧美成人区| 亚洲人成在线一二| 欧美日韩亚洲天堂| 51ⅴ精品国产91久久久久久| 久久乐国产精品| 亚洲无限av看| 久久久999国产| 91精品国产色综合久久不卡98| 精品久久久国产精品999| 日韩亚洲一区二区| 欧美激情视频在线免费观看 欧美视频免费一| 国内精品久久久久久| 欧美激情一区二区久久久| 亚洲经典中文字幕| 亚洲999一在线观看www| 91深夜福利视频| www.亚洲男人天堂| 亚洲激情中文字幕| 国产日韩精品综合网站| 国产噜噜噜噜久久久久久久久| 国产91精品久久久久久| 91亚洲精华国产精华| 中文字幕精品久久久久| 最近日韩中文字幕中文| 日日狠狠久久偷偷四色综合免费| 久久九九热免费视频| 亚洲欧美国产制服动漫| 日韩中文字幕在线视频播放| 日本一区二区三区四区视频| 国产精品视频久久久久| 国产亚洲欧美日韩一区二区| 国产一区二区三区视频免费| 国产69精品99久久久久久宅男| 久久精品视频在线| 欧美午夜激情小视频| 欧美日韩在线免费观看| 国内精品免费午夜毛片| 色综合久久88色综合天天看泰| 国产精品第8页| 91在线播放国产| 国产精品永久免费在线| 欧美性xxxx极品hd欧美风情| 菠萝蜜影院一区二区免费| 亚洲精品456在线播放狼人| 成人有码视频在线播放| 欧美与欧洲交xxxx免费观看| 国产精品吴梦梦| 日韩av色在线| 国产免费成人av| 国产精品高潮粉嫩av| 亚洲色无码播放| 国产一区二区三区免费视频| 亚洲图片在线综合| 欧美高跟鞋交xxxxxhd| 亚洲成年人在线播放| 亚洲欧美日韩精品久久亚洲区| 国产日韩专区在线| 亚洲精品自拍偷拍| 欧美最顶级的aⅴ艳星| 日韩电影中文字幕| 欧美精品在线观看91| 欧美裸体xxxx极品少妇软件| 久久久久久久久久久久久久久久久久av| 日本一本a高清免费不卡|