我有一个我用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我做错了什么? 在作业完成后,我该怎么做才能防止进程留在内存中?
答案 0 :(得分:0)
这是关于长sql脚本。死锁或类似的东西。