Две команды успешно выполняются вручную, но не выполняются при запуске в shell_exec (), что дает ошибку TimeOut

Я пытаюсь выполнить две команды dmd одновременно, используя PHP shell_exec() . Одна команда запускает Tshark в течение 5 секунд. Вторая команда запускает файл .exe . Tshark – это программа, которая фиксирует передачу сетевых пакетов по сетевому интерфейсу. Вторая программа (с именем mtu.exe) отправляет сетевые пакеты с локальной машины на удаленный компьютер.

Дело в том, что когда я запускаю эти команды вручную , я запускаю первую команду. Через мгновение я запускаю второй, и все идет хорошо, и через секунду или около того ожидаемые пакеты передаются mtu.exe и захватываются tshark.exe . Все работает отлично.

Но затем, когда я запускаю следующий скрипт для выполнения этих команд, я получаю следующий вывод:

 $firstCommand = '"C:\Program Files\Wireshark\tshark.exe" -a duration:5 -w capture.pcapng 2>&1'; echo $firstCommand."<br><br>"; $secondCommand = "mtu.exe -d0 -a43020008 -g43010008 -i987654321 -s"Merry Xmass" 2>&1"; echo $secondCommand."<br><br>"; echo shell_exec($firstCommand . " && " . $secondCommand); 

Вывод:

 "C:\Program Files\Wireshark\tshark.exe" -a duration:5 -w capture.pcapng 2>&1 mtu.exe -d0 -a43020008 -g43010008 -i987654321 -s"Merry Xmass" 2>&1 Fatal error: Maximum execution time of 30 seconds exceeded in C:\xampp\htdocs\Test\index.php on line 10 

Строка 10 – это строка, где находится shell_exec() . Вопрос, как решить эту проблему? Почему это происходит?

Related of "Две команды успешно выполняются вручную, но не выполняются при запуске в shell_exec (), что дает ошибку TimeOut"

Запустите tshark в фоновом режиме, & поэтому оболочка не tshark завершения до запуска mtu . Затем используйте команду wait чтобы дождаться завершения команды background.

 echo shell_exec($firstCommand . " & " . $secondCommand . "; wait"); 

Это синтаксис оболочки Unix, я не знаю, есть ли что-то эквивалентное в Windows cmd.