我已经广泛搜索解决了在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
正在执行的文件是视频文件:mp4
,avi
或mkv
。所以它打开外部视频播放器文件,但就像我上面说的那样,PHP最终超时并在30秒后发出错误,而不执行其余的代码。我只需要PHP忽略它打开的程序并继续执行它的任务。任何帮助将不胜感激。
答案 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应该有效,但它不会