PHP exec() as Background Process (Windows Wampserver Environment)

2022-08-30 16:36:20

我正在尝试设置一个php触发器文件,该文件将启动后台进程。(请参阅此问题)

我在Windows Wampserver环境中执行此操作。

例如,我有运行exec函数,该函数要求解析和执行我的函数。trigger.phpbackgroundProcess.php

但是,问题是我的文件正在等待命令在停止之前完成运行。后台进程运行大约 20-30 秒,并一直在等待,直到完全完成。trigger.phpexec()backgroundProcess.phptrigger.phpbackgroundProcess.php

这有意义吗?下面是运行命令的文件trigger.phpexec()

exec('C:\wamp\bin\php\php'.phpversion().'\php.exe -f C:\path\to\backgroundProcess.php > C:\wamp\bin\php\php'.phpversion().'\dev\null &');

基本上,我只想触发后台进程,而不是等待它完成。trigger.php


答案 1

使用以下命令解决了问题:

$WshShell = new COM("WScript.Shell");
$oExec = $WshShell->Run("C:\wamp\bin\php\phpVERSIONNUMBER\php-win.exe -f C:/wamp/www/path/to/backgroundProcess.php", 0, false);

答案 2

尝试在具有PHP 5.2.8的Windows 2000服务器上实现相同的目标。

没有一个解决方案对我有用。PHP一直在等待响应。

找到解决方案是:

$cmd = "E:\PHP_folder_path\php.exe E:\some_folder_path\backgroundProcess.php";
pclose(popen("start /B ". $cmd, "a"));  // mode = "a" since I had some logs to edit

ps :将相同的回复发布到另一个线程(Windows计算机上的PHP;在后台开始过程),因为这2个链接帮助我对此进行了大量研究。


推荐