1

我进行了广泛搜索以解决在 phpdesktop 中打开外部程序而没有 PHP 等待最终导致 PHP 超时的问题。

我需要能够启动程序exec()并执行其余的 PHP 代码,而无需等待exec()命令。我尝试了多种解决方案。更复杂的是,正在打开的文件位于网络驱动器上。这是我尝试过但没有奏效的方法

pclose(popen('start' .$File. '>NUL 2>NUL"', 'r'));   This didn't work because the drive is on the network

exec($File);              Doesn't work as it waits instead of executing the remainder of the code

system($File);            Doesn't work. Same result as exec()

exec($File > /dev/null);  Obviously doesnt work because php is on windows

正在执行的文件是视频文件mp4avimkv. 所以它打开了外部视频播放器文件,但就像我在上面所说的那样,PHP 最终会超时并在 30 秒后给出错误,而不执行其余代码。我只需要 PHP 忽略它打开的程序并继续执行它的任务。任何帮助将不胜感激。

4

2 回答 2

1

您可以使用类似“ nircmd ”的东西,它是一个 Windows 命令行实用程序来执行任务,非常适合 php-desktop。您可以使用“nircmd”具有的各种“exec”操作,因此您可以调用任何您想要的并立即返回 php。请参阅手册(.chm 存档),在 Windows 7/10 下,您可能必须“取消阻止”该帮助文件(在文件属性中)才能查看内容。

于 2018-01-30T00:14:47.293 回答
0

如果'phpdesktop'在php(php -S)中使用内置的Web服务器,那么据我所知,如果没有exec调用阻塞,就不可能这样做,与proc_open等相同

我查了一下,确实 phpdesktop 使用了内置的 Web 服务器: https ://github.com/cztomczak/phpdesktop/blob/c00988f69348b73b6dee27bdf45d145b719e2a3d/phpdesktop-chrome/php_server.cpp

理论上 proc_open 应该可以工作,但它没有

于 2018-01-07T21:35:08.453 回答