在 windows 网络驱动器上使用 php exec(),无需等待或超时
Using php exec() on windows networked drive with no wait or timeout
我进行了广泛的搜索以解决在没有 PHP 等待的情况下在 phpdesktop 中打开外部程序的问题,最终导致 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
正在执行的文件是视频文件:mp4
、avi
或mkv
。所以它正在打开外部视频播放器文件,但就像我上面说的 PHP 最终超时并在 30 秒后给出错误而没有执行其余代码。我只需要 PHP 忽略它打开的程序并继续执行它的任务。任何帮助将不胜感激。
如果 'phpdesktop' 使用 php (php -S) 中的内置 Web 服务器,那么据我所知,如果不调用 exec 是不可能这样做的阻塞,与 proc_open etc
相同
我查了一下,确实 phpdesktop 使用内置网络服务器:
https://github.com/cztomczak/phpdesktop/blob/c00988f69348b73b6dee27bdf45d145b719e2a3d/phpdesktop-chrome/php_server.cpp
理论上 proc_open 应该可以,但实际上没有
您可以使用类似“nircmd”的东西,它是一个 windows 命令行实用程序来执行任务,非常适合 php-桌面。您可以使用 "nircmd" 拥有的各种 "exec" 操作,因此您可以随心所欲地调用 return 到 php。请参阅手册(.chm 存档),在 windows 7/10 下,您可能必须 "unblock" 该帮助文件(在文件属性中)才能查看内容。
我进行了广泛的搜索以解决在没有 PHP 等待的情况下在 phpdesktop 中打开外部程序的问题,最终导致 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
正在执行的文件是视频文件:mp4
、avi
或mkv
。所以它正在打开外部视频播放器文件,但就像我上面说的 PHP 最终超时并在 30 秒后给出错误而没有执行其余代码。我只需要 PHP 忽略它打开的程序并继续执行它的任务。任何帮助将不胜感激。
如果 'phpdesktop' 使用 php (php -S) 中的内置 Web 服务器,那么据我所知,如果不调用 exec 是不可能这样做的阻塞,与 proc_open etc
相同我查了一下,确实 phpdesktop 使用内置网络服务器: https://github.com/cztomczak/phpdesktop/blob/c00988f69348b73b6dee27bdf45d145b719e2a3d/phpdesktop-chrome/php_server.cpp
理论上 proc_open 应该可以,但实际上没有
您可以使用类似“nircmd”的东西,它是一个 windows 命令行实用程序来执行任务,非常适合 php-桌面。您可以使用 "nircmd" 拥有的各种 "exec" 操作,因此您可以随心所欲地调用 return 到 php。请参阅手册(.chm 存档),在 windows 7/10 下,您可能必须 "unblock" 该帮助文件(在文件属性中)才能查看内容。