用户
 找回密码
 入住 CI 中国社区
搜索
查看: 1451|回复: 3
收起左侧

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

[复制链接]
发表于 2017-4-14 18:14:04 | 显示全部楼层 |阅读模式
最近,项目进行优化,我在项目的Crontab命令中,添加了消息的订阅和发布的功能,写的一个命令接口,也就是订阅端,要常驻内存中,然后发布者发送一个命令,然后订阅者端就会接受消息,开始执行发布者希望处理的结果,
我发现在常驻内存调用框架的接口的时候,会出现内存按照一定的规律增长,每请求一次,PHP内存就会增加一定的占用量:
内存分配2:4706160
内存分配1:4705992
2017-04-14 17:22:30     Update updateProgram of News  success
内存分配2:4996792
^Cshell@iZ620vnh79jZ:/svnwebsite/ming$ sudo /usr/bin/php /svnwebsite/ming/index.php Crontab redisSub
[sudo] password for shell:
内存分配1:2652264
2017-04-14 17:27:55     Update updateProgram of News  success
内存分配2:3020248
内存分配1:3019896
2017-04-14 17:28:21     Update updateProgram of News  success
内存分配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 News  success
内存分配2:3020184
内存分配1:3019832
2017-04-14 17:30:05     Update updateProgram of News  success
内存分配2:3298736
如上内存分配1,代表的是程序没有执行前的内存分配量,内存分配2是执行后的内存分配量, 这种情况如何解决?请求几次内存就溢出了。
 楼主| 发表于 2017-4-14 18:16:15 | 显示全部楼层
补充一下:记得常驻内存的解决方案,以前好像看到过,这种情况有一个硬性的要求:要求每一次请求后,执行后的占用内存要小于或者等于执行前的,不然,后期PHP内存早晚会被消耗完的。请给一些大概的思路,中间的变量我都进行了unset处理
 楼主| 发表于 2017-4-17 09:15:38 | 显示全部楼层
没有人来处理吗?
发表于 2017-4-17 10:28:41 | 显示全部楼层
内存会定期增长?如果都 unset 了的话,那应该是无法控制吧,一般来说也不用 PHP 做 daemon。

本版积分规则