d.c 发表于 2017-4-14 18:14:04

关于一个命令行常驻内存的需求

最近,项目进行优化,我在项目的Crontab命令中,添加了消息的订阅和发布的功能,写的一个命令接口,也就是订阅端,要常驻内存中,然后发布者发送一个命令,然后订阅者端就会接受消息,开始执行发布者希望处理的结果,
我发现在常驻内存调用框架的接口的时候,会出现内存按照一定的规律增长,每请求一次,PHP内存就会增加一定的占用量:
内存分配2:4706160
内存分配1:4705992
2017-04-14 17:22:30   Update updateProgram of Newssuccess
内存分配2:4996792
^Cshell@iZ620vnh79jZ:/svnwebsite/ming$ sudo /usr/bin/php /svnwebsite/ming/index.php Crontab redisSub
password for shell:
内存分配1:2652264
2017-04-14 17:27:55   Update updateProgram of Newssuccess
内存分配2:3020248
内存分配1:3019896
2017-04-14 17:28:21   Update updateProgram of Newssuccess
内存分配2:3298784
shell@iZ620vnh79jZ:/svnwebsite/ming$ sudo /usr/bin/php /svnwebsite/ming/index.php Crontab redisSub
内存分配1:2652264
2017-04-14 17:29:29   Update updateProgram of Newssuccess
内存分配2:3020184
内存分配1:3019832
2017-04-14 17:30:05   Update updateProgram of Newssuccess
内存分配2:3298736
如上内存分配1,代表的是程序没有执行前的内存分配量,内存分配2是执行后的内存分配量, 这种情况如何解决?请求几次内存就溢出了。

d.c 发表于 2017-4-14 18:16:15

补充一下:记得常驻内存的解决方案,以前好像看到过,这种情况有一个硬性的要求:要求每一次请求后,执行后的占用内存要小于或者等于执行前的,不然,后期PHP内存早晚会被消耗完的。请给一些大概的思路,中间的变量我都进行了unset处理

d.c 发表于 2017-4-17 09:15:38

没有人来处理吗?

Hex 发表于 2017-4-17 10:28:41

内存会定期增长?如果都 unset 了的话,那应该是无法控制吧,一般来说也不用 PHP 做 daemon。
页: [1]
查看完整版本: 关于一个命令行常驻内存的需求