PHP 常驻任务不会释放内存的吗?

2019-12-19 15:07:47 +08:00
 raysonlu

写了个处理 redis 阻塞队列的脚本任务常驻在系统里面,随着处理的任务数越多,进程占用内存慢慢增大。脚本大致内容如下:

<?php 

$redis = new Redis();
$redis->setOption(\Redis::OPT_READ_TIMEOUT, -1)

//连接 redis 省略

while(1){
	$data = $redis->brpop('queueName',60);
    
    if(!empty($data)){
    	$obj = new someObj();
        $obj->handleSomething($data);
        unset($obj);
    }else{
    	sleep(10);
    }
}

具体查看进程占用内存,我是参考这些参数: ps auxf命令的 RSS 列,以及 top命令的 RES 列

为什么会这样,按我目前理解,每处理一个任务应该都释放部分内存啊,至少看不到会导致占用内存累加的部分,非常疑惑。请教一下各位 dalao 们。是我用的框架有问题?还是 php 的 redis 扩展问题?

爆了设定的占用内存限制会自动结束进程,设置无限内存也有点实际,这问题有点头疼

10390 次点击
所在节点    PHP
61 条回复
weirdo
2019-12-26 10:36:07 +08:00
马克学姿势

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/630530

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX