在Windows上使用PHP进行分叉

Dou*_*dek 13 php windows fork

我们在Windows服务器上运行PHP(确实是许多问题的根源,但目前不是迁移选项).有几点需要用户启动的操作才能启动一些需要一段时间的事情以及用户在成功或失败时不需要知道的事情,例如发送电子邮件或确认一些第三方帐户已更新.如果我可以使用fork pcntl_fork(),这将非常简单,但PCNTL功能在Windows中不可用.

似乎我能得到的最接近的是做这种性质的事情:

exec( 'php-cgi.exe somescript.php' );
Run Code Online (Sandbox Code Playgroud)

但是,这会复杂得多.我需要开始的行动依赖于已经存在于运行过程中的大量上下文; 使用上面的例子,我需要找出基本数据并以某种方式将它提供给新脚本.如果我可以分叉,那只是让父进程提前返回,让孩子继续处理更多事情.

我发现有一些人在谈论他们自己在Windows上编译各种PCNTL函数的工作,但似乎没有任何东西可用(破坏的链接等).

尽管这个问题与我的名字几乎同名,但似乎问题是执行超时比需要分叉更多.所以,我最好选择重构一下来处理调用php-cgi,还是有其他选择?

编辑:似乎exec()不适用于此,至少在没有我弄清楚它的其他方面时,因为它等待直到调用返回.我想我可以使用START,有点像exec( 'start php-cgi.exe somescript.php' );,但它仍然等待,直到另一个脚本完成.

jah*_*jah 13

如何安装psexec并使用-d(不要等待)选项

exec('psexec -d php-cgi.exe somescript.php');
Run Code Online (Sandbox Code Playgroud)