我想通过打开网址在我的服务器上调用脚本。该脚本需要很长时间才能执行,因此我想在后台运行它,因此无需保持浏览器打开并担心超时。
看起来PHP函数system()应该可以正常工作,但它对我不起作用。
脚本必须在正确的目录中执行,以便所有相对路径都正确。这是我想要执行的系统命令:
cd /path/to/script/directory/;php my_php_script &
这是我试图无济于事的最新事情。
system('(cd /path/to/script/directory/;php my_php_script & > /dev/null)');
任何人都知道怎么做?
答案 0 :(得分:2)
在像Linux这样的Unix系统上,这很容易做到。 Nohup是您需要开始的命令,以下命令将继续运行。如果脚本退出或用户注销,命令甚至会运行。这与您的命令非常相似,但更容易阅读。
system("nohup php /path/to/script/directory/my_php_script > /dev/null &");
PHP的垃圾收集器容易泄漏内存,一个简单的脚本可能会在几天内耗尽数十亿字节的内存。最好将PHP脚本安排为在几小时或几分钟内退出的cron作业运行,以便释放内存。