shell_exec()不应该等待被调用的函数来完成执行

时间:2016-10-30 10:30:31

标签: php

我有一个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"调度程序启动"并退出。

1 个答案:

答案 0 :(得分:1)

你暗示PHP是多线程的。它不是。你只能运行一个线程,这意味着每一行必须等到它完成之前的那一行。

如果您需要异步运行某些内容,最好的选择通常是使用cron作业,这样就不会占用Apache线程。也就是说,创建一个通过命令行调用该PHP脚本的作业,这样它就是非交互式的。