Буферизация вывода PHP - PullRequest
       2

Буферизация вывода PHP

3 голосов
/ 26 декабря 2009

Простой вопрос:

Если я включу буферизацию вывода ...

ob_start();
  $a = true;
  header('Location: page.php'); 
  $a = false;
ob_end_flush();

... будет ли $ a зарегистрирован как ложный, или он просто перенаправит страницу без обработки команды (как если бы не была включена буферизация вывода)?

Спасибо!

Ответы [ 3 ]

8 голосов
/ 26 декабря 2009

Если вы не вызовете exit() или die() после перенаправления заголовка, $ a будет иметь значение false, поскольку остальная часть страницы продолжает анализировать (с буферизацией или без нее).

Если у вас нет особых причин, за header("Location: ..."); всегда должна следовать одна из вышеуказанных функций, чтобы не тратить впустую циклы процессора или память.

2 голосов
/ 26 декабря 2009

Буферизация вывода делает именно то, что выводит название, не более того. Он only буферизует вывод, а не присвоение переменной или состояние объекта. В этом случае $a будет установлено на false в конце предоставленного вами примера кода. Что произойдет после этого, зависит от исполнения вашего кода.

1 голос
/ 26 декабря 2009

Это перенаправит на page.php без * обработки остальных команд.

* Технически, выполнение продолжается после вызова заголовка, если вы специально не остановите его после (die, exit). Вы никогда не заметите этого, если будете просто устанавливать переменные и отображать вещи, но если у вас есть команды, которые изменяют базу данных, может быть очень трудно определить, откуда происходят эти изменения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...