在Windows网络驱动器上使用php exec(),无需等待或超时

时间:2018-01-07 21:30:29

标签: php phpdesktop

我已经广泛搜索解决了在phpdesktop中打开外部程序而没有PHP等待最终使PHP超时的问题。

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

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忽略它打开的程序并继续执行它的任务。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

您可以使用" nircmd"这是一个执行任务的Windows命令行实用程序,非常适合php-desktop。你可以使用各种各样的" exec"行动" nircmd"有,所以你可以调用你想要的任何东西,并立即返回到PHP。请参阅手册(.chm存档),在Windows 7/10下,您可能需要"取消阻止"帮助文件(在文件属性),以查看内容。

答案 1 :(得分: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应该有效,但它不会