通过php system()命令在后台运行多个系统命令?

时间:2009-10-20 05:30:02

标签: php ubuntu

我想通过打开网址在我的服务器上调用脚本。该脚本需要很长时间才能执行,因此我想在后台运行它,因此无需保持浏览器打开并担心超时。

看起来PHP函数system()应该可以正常工作,但它对我不起作用。

脚本必须在正确的目录中执行,以便所有相对路径都正确。这是我想要执行的系统命令:

cd /path/to/script/directory/;php my_php_script &

这是我试图无济于事的最新事情。

system('(cd /path/to/script/directory/;php my_php_script & > /dev/null)');

任何人都知道怎么做?

1 个答案:

答案 0 :(得分:2)

在像Linux这样的Unix系统上,这很容易做到。 Nohup是您需要开始的命令,以下命令将继续运行。如果脚本退出或用户注销,命令甚至会运行。这与您的命令非常相似,但更容易阅读。

system("nohup php /path/to/script/directory/my_php_script > /dev/null &");

PHP的垃圾收集器容易泄漏内存,一个简单的脚本可能会在几天内耗尽数十亿字节的内存。最好将PHP脚本安排为在几小时或几分钟内退出的cron作业运行,以便释放内存。