ДОПОЛНЕНИЕ: Проблема в следующем вопросе связана с ВТОРОЙ команда. Когда я закомментирую второе утверждение, первое работает так, как ожидалось, и дает ожидаемые результаты. : s
Мне нужно было запустить две команды терминала из PHP ОДНОВРЕМЕННО, и ничто не решало мою проблему (как вы можете видеть Вот а также Вот, если хотите). Первая команда должна запустить Tshark на 5 секунд и перехватить сетевой трафик (пакеты). Вторая команда должна была генерировать некоторые сетевые пакеты и отправлять их. Вся идея заключается в том, что сетевые пакеты, создаваемые второй командой, должны быть перехвачены Tshark и запущены первой командой.
Другими словами, мне нужно было запустить Tshark в фоновом режиме, и, не дожидаясь его завершения, мне нужно было запустить вторую команду.
Наконец я читаю где-нибудь, если мы закончим команду терминала &
, команда запускается на заднем фоне, и мы можем продолжить выполнение других команд на переднем плане. Я думал, что это решение моей проблемы!
Затем я написал следующий сценарий.
ПРОБЛЕМА:
Когда я выполняю этот скрипт в браузере, веб-страница продолжает загружаться, и загрузка никогда не заканчивается. Кроме того, очевидно, что tshark продолжает работать в фоновом режиме захвата пакетов, а не останавливается через 5 секунд. Я говорю это, потому что пакеты сохраняются в файлах захвата (capture.pcap
а также capture.txt
— файлы, в которых хранятся захваченные пакеты, см. команду в скрипте) ЕСЛИ Я ВРУЧНУЮ КОНЕЦ ЗАГРУЗКИ ВЕБ-СТРАНИЦЫ В БРАУЗЕР.
Кроме того, когда я вручную прекращаю загрузку веб-страницы и открываю capture.pcap
файл в wireshark, я вижу, что пакеты, которые должны были быть отправлены ОДИН РАЗ второй командой, были отправлены СТО раз.
ВОПРОСЫ:
Означает ли это, что обе команды выполняются снова и снова и снова, как в бесконечном цикле?
В скрипте нет петель. Тогда почему этот бесконечный цикл похож на поведение? Как я могу это исправить?
СЦЕНАРИЙ:
shell_exec("tshark -a duration:5 -w /var/www/html/Test/capture.pcap -V > capture.txt &");
shell_exec("./mtu -d0 -a43020008 -g43010008 -i987654321 -s'Mary' 2>&1");
Задача ещё не решена.
Других решений пока нет …