Cakephp 3 shell脚本即使在作业完成后也会留在内存中

时间:2016-04-22 21:44:55

标签: php shell cakephp cron

我有一个我用Cron运行的cakephp shell脚本

bin/cake hello >/dev/null 2>&1

我的HelloShell.php' main()就像:

public function main()
{
    $this->loadModel('Hello');
    $Hello = $this->Hello;
    $Hello->doStuff($this->args);
    return 0; // I tried to add return but it didn't help
}

HelloModel使用其他模型,收集一些信息并将其保存到数据库中。

突然之间,我注意到即使所有事情都已完成并且应该关闭,这个过程也会留在记忆中。

我在控制台中运行ps aux并查看

p1033     607670  0.0  0.0 106100  1132 ?        Ss   23:42   0:00 /bin/sh -c /home/xxxx/public_html/bin/cake hello do_stuff >/dev/null 2>&1
p1033     607676  0.0  0.0 295656 17400 ?        S    23:42   0:00 php /home/xxxx/public_html/bin/cake.php hello do_stuff 

一段时间后,该命令的另一个副本由cron启动,它也会留在内存中,直到服务器的所有者全部杀死所有。

我试图像这样运行一个简单的PHP脚本

for ($i = 0; $i < 10; $i++) sleep(1);

我看到它出现在进程列表中并在10秒后消失。

那么,谁能告诉我cakephp我做错了什么? 在作业完成后,我该怎么做才能防止进程留在内存中?

1 个答案:

答案 0 :(得分:0)

这是关于长sql脚本。死锁或类似的东西。