如何从另一个脚本执行php脚本?
如何从另一个脚本执行php脚本 我想从我的php文件中执行3个php脚本,而不用等待3个脚本完成。换句话说,3个php文件需要一次执行(并行),而不是逐个执行(sequentiell) 这三个脚本都在我的主php文件(脚本)的同一文件夹中。使用如何从另一个脚本执行php脚本?,php,apache,exec,exe,Php,Apache,Exec,Exe,如何从另一个脚本执行php脚本 我想从我的php文件中执行3个php脚本,而不用等待3个脚本完成。换句话说,3个php文件需要一次执行(并行),而不是逐个执行(sequentiell) 这三个脚本都在我的主php文件(脚本)的同一文件夹中。使用exec(“php-yourscript.php”)怎么样 请考虑使用排队系统来存储PHP脚本名称和Word来从队列中获取数据,并执行例如< P>。如果您不想等待它们完成,请用“< /P>”运行它们。 exec('php script.php &&
exec(“php-yourscript.php”)怎么样
请考虑使用排队系统来存储PHP脚本名称和Word来从队列中获取数据,并执行例如
< P>。如果您不想等待它们完成,请用“< /P>”运行它们。
exec('php script.php &> /dev/null &');
shell_exec('php script.php &> /dev/null &');
system('php script.php &> /dev/null &');
`php script.php &> /dev/null &`
根据您的PHPs配置,其中任何一个都应该完成这项工作。虽然它们是不同的函数,但它们的行为应该是相似的,因为所有的输出都被重定向到/dev/null,并且进程被立即分离
我在生产环境中使用了第一个解决方案,客户机启动bash-SMSs发送脚本最多需要10分钟才能完成,它从未失败过
更多信息请参见:··您需要将它们作为分离作业运行,这并不容易,也不便于移植。通常的解决方案是使用nohup
或在stdout和stderr重定向到/dev/null(或Windows中的NUL)的情况下执行脚本,但这通常会出现问题
如果可能,将这三个脚本作为web服务器上的脚本提供,并通过异步cURL函数访问它们。这还有一个优点,即可以通过浏览器测试脚本,并向您提供脚本输出
其他方法包括使用popen()
,或者在Linux下使用at
或batch
实用程序。取自:
为了使命令在运行时不挂起php脚本,您运行的程序不得输出回php。为此,将stdout和stderr重定向到/dev/null,然后将其置于后台
为了执行命令并使其作为另一个不依赖apache线程的进程继续运行(如果有人取消页面,则不会死亡),请运行以下命令:
对于windows:
在shell_exec中,添加“/B”参数,这允许您同时运行多个可执行文件。
请看我对这个问题的回答:
都一样
shell_exec('start/B“C:\Path\to\program.exe”)/B参数是关键
在这里我又试着为你找到这个话题,但似乎找不到
再也找不到了。这对我有用
我希望这能为您解决问题。可能重复:这将等待脚本完成,然后再开始下一个脚本。@Kolink更新了答案。。使用队列存储并使用其他工作进程运行。这总是一个很好的方法。@faressoft我的示例中的每一行都按预期工作,只是尝试了一下,您的服务器设置有一个问题,现在与这里的问题和答案无关。
> /dev/null 2>&1 &
exec('bash -c "exec nohup setsid your_command > /dev/null 2>&1 &"');
function execInBackground($path, $exe, $args = "") {
global $conf;
if (file_exists($path . $exe)) {
chdir($path);
if (substr(php_uname(), 0, 7) == "Windows"){
pclose(popen("start \"bla\" \"" . $exe . "\" " . escapeshellarg($args), "r"));
} else {
exec("./" . $exe . " " . escapeshellarg($args) . " > /dev/null &");
}
}