如何使用PHPV5.4在Windows Server 2008上的另一个进程中运行脚本?

如何使用PHPV5.4在Windows Server 2008上的另一个进程中运行脚本?,php,Php,主要原因是我不想耽误当前的PHP进程。我希望用户能够在脚本执行期间导航 有问题的脚本(importer.php)在完成时用百分比更新txt文件,javascript截取该txt文件,并使用计时器每隔5秒输出百分比,以保持用户更新(全部以加载条的形式) 我可以这样启动脚本: $cmd = '"C:\/path\/to\/v5.4\/php" importer.php'; pclose(popen($cmd, "r")); exit; 这将运行脚本,但会挂起当前进程,直到importer.php完

主要原因是我不想耽误当前的PHP进程。我希望用户能够在脚本执行期间导航

有问题的脚本(
importer.php
)在完成时用百分比更新
txt
文件,javascript截取该
txt
文件,并使用计时器每隔5秒输出百分比,以保持用户更新(全部以加载条的形式)

我可以这样启动脚本:

$cmd = '"C:\/path\/to\/v5.4\/php" importer.php';
pclose(popen($cmd, "r"));
exit;
这将运行脚本,但会挂起当前进程,直到
importer.php
完成。有没有办法摆脱当前流程,改用另一个流程启动


我读到在cmd末尾使用
&
告诉脚本不要等待,但我相信这是一个
*nix
命令,因为我在
Windows
框上运行,所以我无法使用它。。。除非可能有Windows的替代方案,否则根据的文档,您应该能够使用它执行命令,只要您重定向输出

$cmd = '"C:\/path\/to\/v5.4\/php" importer.php';
// Use passthrough here, and redirect the output to a temp textfile.
passthru($cmd . '>%TEMP%\importerOutput.txt');
exit;

我能够通过使用WshShell对象解决这个问题<代码>WScript.Shell

$WshShell = new COM("WScript.Shell");
$WshShell->Run('"C:\/path\/to\/v5.4\/php-win.exe" -f "C:\/path\/to\/code\/snippet\/importer.php" var1 var2 var3', 0, false);
注意:我的文件结构中有空格,因此需要在文件路径周围添加引号。我还能够传递变量,
var1
var2
var3
。我还使用了
\/
来逃避我的斜杠

对于我的案例,我将稍微分解一下
运行
数组:

  • 第一是要运行的
    命令(php路径、脚本路径和要传递的变量)
  • 第二
    0
    -隐藏窗口并激活另一个窗口(下面的链接了解更多选项)
  • 第三
    false
    -布尔值,指示脚本在继续执行脚本中的下一条语句之前是否应等待程序完成执行。如果设置为
    true
    ,脚本执行将停止,直到程序完成
  • 有关
    WScript.Shell
    的更多信息,请访问以了解详细信息


    希望这对其他人有帮助

    这在当前流程中仍然会遇到阻碍..:/