亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PHP-FPM (7.4.2) 不會優雅地停止?

PHP-FPM (7.4.2) 不會優雅地停止?

PHP
慕森王 2022-10-28 16:19:11
在更新期間,我們希望停止 php-fpm 并等待所有正在運行的腳本完成,然后再進行任何文件更改。我們發現我們需要設置process_control_timeout,所以我們在“/etc/php/7.4/fpm/pool.d/zz-00-overrides.ini”中放置了“process_control_timeout = 36000s”(我們重新啟動了php-fpm)。然后我們創建了一個測試腳本來測試它。我們的測試腳本會創建一個文件,然后 30 秒后,它會創建另一個文件。劇本:$id = random_int(10000, 99999);file_put_contents(__DIR__ . '/' . $id . '-start', '');sleep(30);file_put_contents(__DIR__ . '/' . $id . '-end', '');當我們正常運行腳本時(瀏覽器 -> nginx -> php-fpm),它會創建第一個文件,30 秒后它會創建第二個文件。當我們運行腳本時,等待幾秒鐘,然后嘗試停止它(運行方式和之前一樣:瀏覽器 -> nginx -> php-fpm)(停止方式:“service php7.4-fpm stop”),它將創建第一個文件,然后運行服務停止命令,只需要 2-3 秒,然后瀏覽器顯示“502 Bad Gateway”,然后永遠不會創建第二個文件。它不會優雅地停止。我們想要的結果是“service php7.4-fpm stop”等待所有腳本完成,然后停止,而不是像現在這樣為了強制停止而殺死任何正在運行的腳本。我們錯過了什么,我們做錯了什么嗎?它是某種地方的錯誤嗎?任何幫助將非常感激。Debian 10 (Linux 4.19.0-6-cloud-amd64 #1 SMP Debian 4.19.67-2+deb10u2 (2019-11-11) x86_64 GNU/Linux)PHP 7.4.2Nginx 1.14.2
查看完整描述

1 回答

?
心有法竹

TA貢獻1866條經驗 獲得超5個贊

運行kill -QUIT $(cat /run/php/php7.4-fpm.pid)確實考慮了process_control_timeout配置。一旦所有腳本完成執行,它將導致 PHP-FPM 進程停止。此時,PID 將被刪除。因此,為了使其工作:

  1. $(kill -QUIT $(cat /run/php/php7.4-fpm.pid))

  2. 在一個循環中,檢查是否/run/php/php7.4-fpm.pid仍然存在,如果不存在,則中斷循環。


查看完整回答
反對 回復 2022-10-28
  • 1 回答
  • 0 關注
  • 163 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號