oddberry
31.05.2013 - 22:14
какая есть команда в php - отправить страницу пользователю (закрыть соединение) и продолжить выполнение скрипта.
то есть к примеру - я получил данные из бд, я хочу отправить страницу пользователю, и после этого я делаю манипуляции, из-за которых задерживать пользователя я не хочу - то есть к примеру поместить страницу в кэш, или выполнить какие то манипуляции со счётчиками, обновить какие то данные и тп. то есть хочется ускорить выдачу данных
Игорь_Vasinsky
31.05.2013 - 22:16
http://php.net/manual/ru/function.ignore-user-abort.php
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
oddberry
31.05.2013 - 22:43
то, что вы мне кинули - это игнорировать отключение клиента,
не понимаю как я это могу использовать?
мне нужно что то типа flush() с отключением соединения
//-----------------------
и после того что я прочёл возникает вопрос - насчёт отключения клиента
в каких случаях скрипт будет прерываться -
как я понял скрипт может прерваться к примеру если воспользоваться flush() (если эта функция сработает на сервере), сервер не может соединиться с клиентом, и скрипт прерывается.
или же скрипт может прерваться вообще в любой момент? то есть это может привести к тому, что скрипт не закончит полноценное формирование каких то данных, то есть к примеру пользователь размещает объявление, а скрипт не успел обновить все необходимые таблицы БД?
Игорь_Vasinsky
31.05.2013 - 23:07
Цитата |
или же скрипт может прерваться вообще в любой момент? |
Цитата |
к примеру пользователь размещает объявление, а скрипт не успел обновить все необходимые таблицы БД? |
как так. скрипт выолняется сверху вниз..
ты про аякс говоришь? так там тоже можно ослеживать успех, сбой, готовность
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
killer8080
1.06.2013 - 00:44
Цитата (oddberry @ 31.05.2013 - 21:14) |
я хочу отправить страницу пользователю, и после этого я делаю манипуляции, из-за которых задерживать пользователя я не хочу |
не выйдет
Цитата (oddberry @ 31.05.2013 - 21:43) |
и после того что я прочёл возникает вопрос - насчёт отключения клиента
в каких случаях скрипт будет прерываться - как я понял скрипт может прерваться к примеру если воспользоваться flush() |
функция flush не разрывает соединение с клиентом, в php вообще отсутствует функционал, для прерывания соединения с клиентом, без остановки работы скрипта. flush просто сбрасывает буфер в поток, и всё. Она не запрещает дальнейшую работу, и вывод контента. Кстати смысла в ней вообще нет, если на фронт энде задействовано gzip сжатие. Есть только один способ - запустить бэкграунд процесс, но делать этого по чем зря, не советую, это лишняя нагрузка на сервер.
sergeiss
1.06.2013 - 12:05
oddberry, ты не понимаешь принцип работы веб-сервера!
Сервер получает запрос, формирует страницу, отправляет её клиенту. Всё. Он больше на связан с клиентом.
Если клиенту (браузеру) нужны данные, то он делает новый запрос. Да, это может быть запрос-ответ без полного обновления страницы (аякс), но всё равно проходит полный цикл работы с веб-страницей "
подключение-запрос-обработка-ответ-данные-отключение".
Поэтому, чтобы сделать так, как ты хочешь... Надо сначала загрузить начальную страницу. Затем послать аякс-запрос. Он что-то обработает на сервере, вернет данные браузеру.
Важно: промежуточные данные, нужные для дальнейшей работы, надо сохранить в
сессии на сервере!
После получения ответа ты можешь отправить запрос на продолжение обработки. Сервер возьмет данные из сессии и продолжит обработку. Опять вернет данные по окончании обработки.
Ну, и так далее: можно по такому "циклу" хоть сутками работать.
_____________
*
Хэлп по PHP*
Описалово по JavaScript *
Хэлп и СУБД для PostgreSQL*
Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. *
"накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.