国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > 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。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 建昌县| 开平市| 介休市| 财经| 都兰县| 衡阳市| 勐海县| 常山县| 抚顺县| 中山市| 龙海市| 石柱| 台山市| 安西县| 曲阜市| 高尔夫| 清原| 亳州市| 清徐县| 巨野县| 盐亭县| 兰考县| 古丈县| 万全县| 鄂托克前旗| 崇信县| 镇巴县| 瑞丽市| 车致| 望谟县| 金华市| 车险| 阿瓦提县| 朝阳县| 沾益县| 通化县| 绿春县| 临江市| 唐河县| 枣强县| 宜州市|