Я пытаюсь написать сценарий php, который может сканировать сеть на наличие записей mDNS и возвращать результаты.
'dns-sd -B _roomcast-capi._tcp'
Я работаю на OSx - насколько я понимаю, эта команда не работаетв Windows без установки дополнительного программного обеспечения.
Проблема в том, что эта команда unix не работает с shell_exec или чем-то подобным. PHP просто зависает, и я остаюсь в ожидании несуществующего ответа.
Я попытался запустить команду через shell_exec (), exec (), system (), proc_open () и passthru () - понятия не имею, что они делают по-разному, но все они имеют одинаковый результат .. У меня также естьпопытался перенаправить вывод STDERR, но это, похоже, не имело значения.
Одна из моих попыток ..
$p = shell_exec("dns-sd -B _roomcast-capi._tcp 2>&1");
echo($p);
Другая попытка ...
$descspec = array(
0 => array("pipe", "r"),
1 => array("pipe", "w"),
2 => array("file", "error-output.txt", "a")
);
$process = proc_open('dns-sd -B _roomcast-capi._tcp', $descspec, $pipes);
foreach($pipes as $pipe) {
var_dump($pipe);
// echo "$process<br />";
}
Я мог бы перечислить остальные мои попытки здесь, но они, вероятно, все не так, если честно .. PHP не моя самая сильная область.
Вы можете увидеть здесь, когда я запускаю команду в терминале, яможет получить ответ почти сразуely.
https://prnt.sc/n6fe9e
Я заметил, что когда я запускаю эту команду в терминале на моем Mac, мне приходится завершать ответ Ctrl + C - это может быть причиной для shell_execне заканчивается?