否則PHP程式或第三方模組(如Imagemagick擴充套件)導致的記憶體漏失問題會導致記憶體耗盡或不足。
php-fpm.conf中有相關設定: (推薦學習:PHP視訊教學)
#請自行按需求設定 pm.max_requests = 1024
實際上還有另一個跟它有關聯的值max_children,這個是每次php-fpm會建立多少個進程,這樣實際上的記憶體消耗是max_children*max_requests*每個請求使用記憶體。
另外一些粗暴的方法包括建立cron kill掉佔用記憶體過多的php-cgi
1.檢查php進程的記憶體占用,殺掉記憶體使用超額的進程
一般情況下,如果php-cgi進程佔用超過1%的記憶體,就得考慮一下是否要殺掉它了。因為普通情況下,php-cgi進程一般占用0.2%或以下。
這裡提供一個指令碼供各位使用,就是放在cron任務裡,每分鐘執行一次。
使用crontab -e 命令,然後新增如下排程任務
* * * * * /bin/bash /usr/local/script/kill_php_cgi.sh
kill_php_cgi.sh指令碼如下
* * * * * /bin/bash /usr/local/script/kill_php_cgi.sh kill_php_cgi.sh指令碼如下 #!/bin/sh #如果是要殺掉php-fpm的進程,下面的語句中php-cgi請改成php-fpm pids=`ps -ef|grep php-cgi|grep -v "grep"|grep -v "$0"| awk '{print $2}'` if [ "$pids" != "" ];then for pid in $pids; do kill -9 $pid done fi
2.增加記憶體,將PHP_FCGI_MAX_REQUESTS的值設定成跟你記憶體總儲存量相對應的值
3.優化程式,降低處理每次請求占用的記憶體大小
如果PHP-FPM能夠提供設定子進程記憶體超過指定大小就被kill,那就省事多了
以上就是php寫定時器怎麼避免記憶體洩露的詳細內容,更多請關注TW511.COM其它相關文章!