suPHP использует небуферизованный вывод? - PullRequest
0 голосов
/ 14 апреля 2011

У меня есть скрипт на общем хосте, который использует suPHP.Мне нужен небуферизованный вывод (так что я могу очистить перед запуском длительной подпрограммы), но не могу найти его, чтобы заставить его работать, поэтому мои вызовы сброса в основном просто игнорируются.Я попытался настроить .htaccess (что приводит к внутренней ошибке 500), я попытался изменить php.ini на уровне учетной записи и на уровне папки для конкретного сценария (оба из которых, кажется, полностью игнорируются, яНапример, я не могу отключить движок php с engine = Off или suphp_engine = Off).

Как отключить буферизацию (возможно, придется спросить моего хостинг-провайдера, но что я могу попросить их изменить конкретно)?Это вообще возможно с suPHP?

Ответы [ 2 ]

1 голос
/ 15 апреля 2011

Поговорив со службой поддержки хостинга, я наконец узнал php.ini, но отключение или изменение размера буфера не дает никакого эффекта.Это довольно плохо документировано (один комментарий к официальной документации php, насколько я могу судить), но кажется, что suPHP буферирует ВСЕ выходные данные ПОСЛЕ внутренних php-буферов.Итак, flush работает ... но все выходные данные снова буферизируются с помощью suPHP, и нет никакого способа обойти это.Так что, если вы используете suPHP, вы застряли за вторым буфером, который не может быть отключен, и в результате сбросы не будут иметь никакого эффекта.Вы можете использовать другие команды буфера, такие как буферизация, чтобы вы могли отправлять заголовки дальше через сценарий, чтобы управлять потоком, но общий выход за suPHP проходит через буфер перед выходом.

0 голосов
/ 14 апреля 2011

Что происходит, когда вы выполняете flush()?Вы получаете ошибку или просто не выводите?Если кэширование происходит на уровне веб-сервера, вам может потребоваться заполнить его буфер, чтобы сброс вступил в силу.попробуйте отправить много пробелов до сброса и посмотрите, эффективнее ли это.

...