Я хотел запустить одновременно две команды cmd с использованием PHP. Я попробовал shell_exec()
как с строками аргументов (т.е. мои команды cmd), разделенными &&
но которые, похоже, не работали в ОС Windows. Обсуждение об этом здесь.
Тогда мой веб-поиск привел меня сюда . Основываясь на этом и примере на этой странице , я попытался поместить обе команды cmd в shell_exec()
отдельно, а затем поместить эти два shell_exec()
в два файла PHP с именем scriptOne.php
и scriptTwo.php
. Затем я последовал примеру руководства PHP, чтобы написать третий скрипт, который должен выполнить два сценария ASYNCHRONOUSLY.
Проблема в том, что оба сценария НЕ кажутся выполненными вообще. Я поставил простые операторы печати в обоих сценариях, но они также не получают эхо в браузере. Экран браузера остается пустым. Вопрос в том, почему и как это исправить?
scriptOne.php:
<?php echo 'Jess'; echo shell_exec('"C:\Program Files\Wireshark\tshark.exe" -i Ethernet0 -a duration:5 -w capture.pcapng 2>&1');
scriptTwo.php:
<?php echo 'Sie'; echo shell_exec('mtu -d0 -a43020008 -g43010008 -i987654321 -s"Merry" 2>&1');
index.php:
<?php /* Create both cURL resources */ $curlHandle1 = curl_init(); $curlHandle2 = curl_init(); /* Set URL's and other appropriate options */ curl_setopt($curlHandle1, CURLOPT_URL, "scriptOne.php"); curl_setopt($curlHandle1, CURLOPT_HEADER, 0); curl_setopt($curlHandle2, CURLOPT_URL, "scriptTwo.php"); curl_setopt($curlHandle2, CURLOPT_HEADER, 0); /* Create the multiple cURL handle */ $multipleCurlHandle = curl_multi_init(); /* Add the two previously created handles to the multi handle */ curl_multi_add_handle($multipleCurlHandle, $curlHandle1); curl_multi_add_handle($multipleCurlHandle, $curlHandle2); $operationsStillRunning = null; /* Execute the handles */ do { $curlCode = curl_multi_exec($multipleCurlHandle, $operationsStillRunning); } while ($curlCode == CURLM_CALL_MULTI_PERFORM); while ($operationsStillRunning && $curlCode = CURLM_OK) { if (curl_multi_select($multipleCurlHandle) != -1) { do { $curlCode = curl_multi_exec($multipleCurlHandle, $operationsStillRunning); } while ($curlCode == CURLM_CALL_MULTI_PERFORM); } } /* Close the handles */ curl_multi_remove_handle($multipleCurlHandle, $curlHandle1); curl_multi_remove_handle($multipleCurlHandle, $curlHandle2); curl_multi_close($multipleCurlHandle);