|
|
|
| В середине относительно длиного кода имеется команда выдачи информации внешнему пользователю (системе 1С)
Эту команду необходимо исполнить незамедлительно, и только потом продолжать исполнение РНР кода, который отрабатывает довольно долго.
Но получается так, что ответ в 1С выдается лишь тогда, когда полностью отработал РНР код. И это нехорошо.
Можно ли исправить ситуацию?
(В обмене с 1С браузер не участвует). | |
|
|
|
|
|
|
|
для: Владимир55
(12.05.2013 в 21:48)
| | Это особенность вывода информации на компьютерах, начиная с контроллеров железа и операционными системами, заканчивая базами данных и браузерами - все идет через буфер, чтобы не записывать каждую операцию, данные сначала накапливаются, а потом по мере заполнения буфера сбрасываются. Если вы хотите сбросить данные раньше - используйте функцию flush(). | |
|
|
|
|
|
|
|
для: cheops
(12.05.2013 в 21:57)
| | Вот такой код на сервере выполняется 15 секунд:
for ($i=0; $i <= 50000000; $i++) $x = round (1, 1000);
|
И с его помощью пытаюсь проверить эффективность flush ();
echo "success\n";
flush ();
for ($i=0; $i <= 50000000; $i++) $x = round (1, 1000);
|
Пятнадцати секунд достаточно, чтобы оценить, когда система 1С получила отклик. И получается, что flush ничего не дает - ожидание все те же 15 секунд, как если бы flush не было...
Не помогает и ob_flush.
Больше вариантов нет? | |
|
|
|
|
|
|
|
для: Владимир55
(13.05.2013 в 12:40)
| | Может быть, нужно сделать output_buffering = Off ? Это поможет?
Сейчас output_buffering 4096.
(Если я правильно понимаю, то эта настройка распространяется на РНР вцелом, а не на конкретный скрипт. И вся система будет тормозить !?) | |
|
|
|
|
|
|
|
для: Владимир55
(13.05.2013 в 18:55)
| | >Может быть, нужно сделать output_buffering = Off ? Это поможет?
Поможет.
>(Если я правильно понимаю, то эта настройка распространяется на РНР вцелом, а не на конкретный скрипт. И вся система
>будет тормозить !?)
Совершенно верно, но вы можете изменить эту директиву на уровне виртуального хоста или даже отдельной папки при помощи .htaccess (если, конечно, у вас не nginx). | |
|
|
|