我需要在用户操作时执行目录副本,但目录非常大,所以我希望能够执行这样的操作,而无需用户知道副本完成所需的时间.
任何建议将不胜感激.
我正在寻找最好的,或任何方式真正从后台启动PHP的过程,所以我可以在以后的脚本中杀死它.
现在,我正在使用:shell_exec($ Command); 这个问题是它等待程序关闭.
当我执行shell命令时,我想要一些与nohup具有相同效果的东西.这将允许我在后台运行该过程,以便稍后在脚本中可以关闭它.我需要关闭它,因为此脚本将定期运行,并且程序运行时无法打开.
我曾想过生成一个.bat文件来在后台运行命令,但即便如此,我如何在以后杀死该进程?
我见过的linux代码是:
$PID = shell_exec("nohup $Command > /dev/null & echo $!");
// Later on to kill it
exec("kill -KILL $PID");
Run Code Online (Sandbox Code Playgroud)
编辑:结果我不需要杀死进程
我正在努力弄清楚如何做到这一点:我有一个php文件让我们调用trigger.php运行一些PHP代码,引发另一个我们将调用backgroundProcess.php开始处理的php文件.
虽然trigger.php需要忽略发生的事情backgroundProcess.php,但它只需要开始处理,它会在backgroundProcess.php继续运行时停止.
EDIT1
我在Windows Wampserver 2.1上运行它所以这必须是一个Windows命令.
EDIT2
由于jakenoble的建议,用以下命令解决了它:
exec("C:\wamp\bin\php\phpVERSION_NUMBER\php.exe -f C:\wamp\www\path\to\backgroundProcess.php");
Run Code Online (Sandbox Code Playgroud) 我实际上正在尝试将其应用于发送电子邮件的脚本。发送电子邮件部分需要几秒钟,这太长了。我想要的是第一个脚本完成其工作并触发另一个脚本(发送电子邮件),但我希望第一个脚本将控制权返回给用户,而无需等待第二个脚本发送电子邮件。
我考虑过的选项:
Cron Job:为此,我必须让 cron 作业每 2 分钟运行一次。不可行!
PHP 脚本激活一个 cron 作业,完成后会自行停用:好吧,但是我该怎么做呢?PHP 可以做到这一点吗?