亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Reload如何正確的在PHP中使用

發布時間:2020-12-22 16:56:34 來源:億速云 閱讀:172 作者:Leah 欄目:開發技術

這篇文章給大家介紹Reload如何正確的在PHP中使用,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

如何重現問題呢?讓我們寫一個簡單的腳本來模擬:

<?php

sleep(11);
echo "foo";

?>

此時用瀏覽器瀏覽這個網址,接著立刻執行 reload 操作,就能看到 502 錯誤了。

難道 PHP 這么弱?連 reload 基本的平滑性都無法保證?答案當然是否定的,實際上通過 process_control_timeout 參數可以實現我們的目標。可惜這個參數缺省是 0,也就是不生效,本文把它設置成 10s。重新執行之前的實驗步驟,這一次正常輸出了結果。不過如果你多做幾次實驗的話,可能會發現當我們 reload 的時候,sleep 立刻就結束了,這是因為 sleep 收到 reload 發出的信號后直接返回了,下面讓我們再改寫一下腳本:

<?php

sleep(11);
echo "foo";
sleep(11);
echo "bar";

?>

重新執行之前的實驗步驟,你會發現 502 錯誤又出現了。這是因為 reload 雖然讓第一個 sleep 立刻結束了,但是第二個 sleep 還是有效的,而且超過了 process_control_timeout 的時間限制。如果我們把 process_control_timeout 設置為 12s,那么就又好了。

如此說來,我們只要給 process_control_timeout 設置一個合理的數值就能保證 reload 操作的平滑性,不過到底多大是合理的數值呢?太小的話可能起不到作用,太大的話會不會有副作用?讓我們帶著疑問重復上一次實驗,不過這次我們再加一個監控:

shell> watch -n1 'ps aux | grep php[-]fpm'

此監控的目的是為了觀察 reload 過程中 PHP-FPM 進程數的變化情況,為了讓效果更明顯些,建議把 PHP-FPM 的啟動方式改成 static 模式,同時進程數不要太多。

當我們重復上一次實驗的時候,結果發現除了正在執行請求的進程,其它進程直接就被干掉了,而新進程又沒有立刻啟動,就這樣一直卡到最后一個舊進程執行完后新進程才完成啟動過程。在此期間,如果有別的請求進來,那么無疑它無法立刻得到響應。

根據我們的實驗可以得出結論:缺省情況下,PHP-FPM 無法保證平滑的執行 reload 操作,必須設置一個合理的 process_control_timeout 才行,同時需要注意的是其值不能設置的過大,否則系統可能出現更為嚴重的請求堵塞問題。

關于Reload如何正確的在PHP中使用就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

鄂伦春自治旗| 阿拉善左旗| 沙田区| 上虞市| 隆回县| 益阳市| 池州市| 原平市| 波密县| 蓬安县| 双流县| 宿州市| 沂南县| 秦安县| 凤台县| 河池市| 新营市| 嵊泗县| 永胜县| 贵德县| 绥化市| 文登市| 东平县| 休宁县| 浦县| 澄江县| 民勤县| 盐津县| 开江县| 葵青区| 大新县| 蓬莱市| 沙河市| 平谷区| 麟游县| 封丘县| 营口市| 河东区| 台前县| 泾阳县| 共和县|