phpdesktop — использование php exec () на сетевом диске Windows без ожидания или тайм-аута

Я много искал, чтобы решить проблему открытия внешней программы в 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

Выполняемый файл — это видеофайл: mp4, avi или же mkv, Таким образом, он открывает файл внешнего видеоплеера, но, как я уже сказал выше, PHP в конечном итоге истекает и выдает ошибку через 30 секунд без выполнения остальной части кода. Мне просто нужен PHP, чтобы игнорировать программу, которую он открыл, и продолжать выполнять свои задачи. Любая помощь будет принята с благодарностью.

1

Решение

Вы могли бы использовать что-то вродеNirCmd«которая является утилитой командной строки Windows для выполнения задач и идеально подходит для php-desktop. Вы можете использовать различные» exec «действия, которые имеет» nircmd «, так что вы можете вызывать все, что захотите, и сразу же вернуться к php. См. Руководство (архив .chm), в Windows 7/10 вам может понадобиться «разблокировать» этот файл справки (в свойствах файла), чтобы просмотреть его содержимое.

1

Другие решения

Если phpdesktop использует встроенный веб-сервер в php (php -S), то, насколько я знаю, невозможно сделать это без блокировки вызова exec, то же самое с proc_open и т. Д.

Я посмотрел и действительно phpdesktop использует встроенный веб-сервер:
https://github.com/cztomczak/phpdesktop/blob/c00988f69348b73b6dee27bdf45d145b719e2a3d/phpdesktop-chrome/php_server.cpp

Теоретически proc_open должен работать, но это не так

0

По вопросам рекламы [email protected]