macos — Какая разница при использовании выходного буфера на PHP?

Я новичок в PHP, и у меня есть вопрос о буферизации вывода. У меня есть этот код, который я нашел в сети:

ob_start();
system('ipconfig /all');
$contents = ob_get_contents();
ob_end_clean();
$searchFor = "Physical";
$pmac = strpos($contents, $searchFor);
$mac = substr($contents, ($pmac + 36), 17);
return $mac;

Это все работает нормально, но я не понимаю использование буфера вывода здесь. Если я изменю его на:

$contents = system('ipconfig /all');
$searchFor = "Physical";
$pmac = strpos($contents, $searchFor);
$mac = substr($contents, ($pmac + 36), 17);
return $mac;

Кажется, что он не может отфильтровать содержимое $ content, чтобы найти mac-адрес. Так что же для этого делает выходная буферизация?

Из того, что я понимаю о буферизации вывода, она загружает всю страницу в одну переменную, а затем возвращает все сразу, так что страница загружается сразу и быстрее. Я не могу понять, как это изменило бы вывод так резко в эта ситуация.

0

Решение

system() Вызов не только запустит команду, но и отобразит вывод. По крайней мере, ваш пример кода должен был присвоить возвращаемое значение.
Кроме того, необходима выходная буферизация, так как system call будет сбрасывать результаты команды непосредственно на веб-сервер (если нет явного выходного буфера).

То, что просто должно было быть использовано здесь, это exec() — с присвоением результата & $contents сразу.

0

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

Других решений пока нет …