php写定时器怎么避免内存泄露-PHP问题

资源魔 21 0
关于PHP-FPM多过程的模式,想要防止内存泄露成绩很简略,就是要让PHP-CGI正在解决肯定数目过程撤退退却出便可。

不然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写按时器怎样防止内存泄漏的具体内容,更多请存眷资源魔其它相干文章!

标签: php php教程 php故障解决 php使用问题

抱歉,评论功能暂时关闭!