a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C# > 正文

探討:關閉瀏覽器后,php腳本會不會繼續運行

2020-01-24 03:13:49
字體:
來源:轉載
供稿:網友

關閉瀏覽器后,php腳本會不會繼續運行

這個問題需要理解PHP的"連接處理"機制
在 PHP 內部,系統維護著連接狀態,其狀態有三種可能的情況:
* 0 - NORMAL(正常)
* 1 - ABORTED(異常退出)
* 2 - TIMEOUT(超時)

當 PHP 腳本正常地運行 NORMAL 狀態時,連接為有效。
當遠程客戶端中斷連接時,ABORTED 狀態的標記將會被打開。遠程客戶端連接的中斷通常是由用戶點擊 STOP 按鈕導致的。
當連接時間超過 PHP 的時限(請參閱 set_time_limit() 函數)時,TIMEOUT 狀態的標記將被打開。

可以決定腳本是否需要在客戶端中斷連接時退出。有時候讓腳本完整地運行會帶來很多方便,即使沒有遠程瀏覽器接受腳本的輸出。默認的情況是當遠程客戶端連接中斷時腳本將會退出。該處理過程可由 php.ini 的 ignore_user_abort 或由 Apache .conf 設置中對應的“php_value ignore_user_abort”以及 ignore_user_abort() 函數來控制。如果沒有告訴 PHP 忽略用戶的中斷,腳本將會被中斷,除非通過 register_shutdown_function() 設置了關閉觸發函數。通過該關閉觸發函數,當遠程用戶點擊 STOP 按鈕后,腳本再次嘗試輸出數據時,PHP 將會檢測到連接已被中斷,并調用關閉觸發函數。

腳本也有可能被內置的腳本計時器中斷。默認的超時限制為 30 秒。這個值可以通過設置 php.ini 的 max_execution_time 或 Apache .conf 設置中對應的“php_value max_execution_time”參數或者 set_time_limit() 函數來更改。當計數器超時的時候,腳本將會類似于以上連接中斷的情況退出,先前被注冊過的關閉觸發函數也將在這時被執行。在該關閉觸發函數中,可以通過調用 connection_status() 函數來檢查超時是否導致關閉觸發函數被調用。如果超時導致了關閉觸發函數的調用,該函數將返回 2。

需要注意的一點是 ABORTED 和 TIMEOUT 狀態可以同時有效。這在告訴 PHP 忽略用戶的退出操作時是可能的。PHP 將仍然注意用戶已經中斷了連接但腳本仍然在運行的情況。如果到了運行的時間限制,腳本將被退出,設置過的關閉觸發函數也將被執行。在這時會發現函數 connection_status() 返回 3。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 开心激情网站 | 久久99国产精一区二区三区 | 人人超碰在线 | 久久久久亚洲 | 亚洲精品成人免费 | 国产精品日韩欧美一区二区 | 亚洲日韩中文字幕天堂不卡 | 国产在线h| 日本爽快片毛片 | 中文字幕av高清 | 欧美激情综合色综合啪啪五月 | 欧美成人在线免费观看 | 欧美三日本三级三级在线播放 | 久久一区 | 日韩毛片免费视频 | 欧洲亚洲精品久久久久 | 国产精品成人在线 | 四虎欧美| 久久精品一 | 中文字幕一区二区三区四区不卡 | 成人免费淫片视频观 | 成人看的免费视频 | 一本色道久久综合狠狠躁篇的优点 | 国产999精品久久久久久 | 午夜精品久久久久久久99樱桃 | 免费一区| 6080亚洲精品一区二区 | 久久国产精品一区 | 欧美秋霞| 免费a网站 | 在线有码| 精品一区二区三区蜜桃 | 成人久久| 欧美在线综合 | 国产精品国产三级国产普通话99 | 欧美日韩午夜 | 亚洲cb精品一区二区三区 | 成人 在线 | 成人免费观看网址 | 在线观看一区 | 久久精品亚洲a |