Можно ли вызывать ob_start PHP более одного раза?

Можно ли вызывать ob_start PHP более одного раза?

Извините, если это глупый вопрос, но я действительно не знаю.

Мой сайт действительно большой (количество файлов), его социальная сеть, и один из включенных файлов использует выходной буфер OB_start PHP для чего-то, я не думаю, что кто-то еще начал мой сайт давным-давно, а теперь он мне нужен. загляните в нее больше, чтобы увидеть, что она делает точно.

В любом случае, я хочу использовать ob_start («ob_gzhandler»); для сжатия файлов CSS, и все файлы на моем сайте загружаются (включены) через индексный файл, поэтому я хочу знать, могу ли я использовать его, даже если он уже используется где-то еще в коде?

Да, вы можете назвать это более одного раза. Однако он создает новый буфер каждый раз, поэтому будьте осторожны.

Из руководства : «Буферы вывода стекируются, то есть вы можете вызывать ob_start (), в то время как другой ob_start () активен. Просто убедитесь, что вы вызываете ob_end_flush () соответствующее количество раз.Если задействованы несколько функций обратного вызова, выход фильтруется последовательно через каждый из них в порядке вложенности ».

Вы говорите так:

Я хочу использовать ob_start ("ob_gzhandler"); для сжатия CSS-файлов

Я предпочитаю обслуживать и сжимать JS / CSS (ну, статические) файлы – это работа веб-сервера (то есть Apache), а не PHP.

Об этом вы можете взглянуть на mod_deflate – по крайней мере, если вы используете Apache 2.

все файлы на моем сайте загружаются (включены) через индексный файл

Это действительно необходимо ? Таким образом, у вас есть работа с PHP без очевидной (?) Причины.
(Обратите внимание, что даже если файлы CSS / JS передаются через PHP, Apache должен иметь возможность сжимать их с помощью mod_deflate , то же самое верно и для HTML, JSON, … btw)

Еще одно преимущество того, что вы не переходите через PHP для работы с этими файлами, заключается в том, что было бы проще заставить их обслуживать другой сервер, так как ваш сайт будет расти (если он будет расти на самом деле):

  • вы могли бы иметь кучу «серверов PHP», обрабатывать страницы PHP
  • и один или два «сервера статических файлов», на сервер только CSS / JS / изображения, а также облегчить загрузку или «серверы приложений»; нет необходимости в PHP на этих; вы также можете использовать что-то вроде lighttpd вместо Apache

ob_start об этом, ob_start говорит следующее:

Буферы вывода стекируются, то есть вы можете вызывать ob_start (), пока активен другой объект ob_start (). Просто убедитесь, что вы вызываете ob_end_flush () соответствующее количество раз. Если активны несколько функций обратного вызова, выходной сигнал последовательно фильтруется через каждый из них в порядке вложенности.

Итак, я думаю, что ответ на ваш вопрос «да» ðŸ™‚