我有一个php文件" test.php"包含以下两个函数
function scheduler($id, $url) {
// some code here that need some time to execute
}
function start_scheduler() {
$id = 10;
$url = "example.com";
shell_exec( scheduler($id, $url) . "> /dev/null 2>/dev/null &" );
echo "Scheduler started";
exit();
}
不幸的是,shell_exec()无法正常运行。 我想当start_scheduler()执行时它不应该等待调度程序($ id,$ url)完成执行而不是echo"调度程序启动"并退出。
答案 0 :(得分:1)
你暗示PHP是多线程的。它不是。你只能运行一个线程,这意味着每一行必须等到它完成之前的那一行。
如果您需要异步运行某些内容,最好的选择通常是使用cron作业,这样就不会占用Apache线程。也就是说,创建一个通过命令行调用该PHP脚本的作业,这样它就是非交互式的。