URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 7437
[ Назад ]

Исходное сообщение
"PHP register_shutdown_function виснет браузер"

Отправлено VArtem , 27-Дек-11 02:39 
Здравствуйте,

Есть авторизованные юзеры (при помощи сессии). Стоит задача отправлять смс. Т.к. процесс отправки смс достаточно долгий (20-40сек) хочется что бы юзеру не требовалось сидеть с зависшим браузером и ожидать окончание отправки.

Сделал отдельную функцию отправки sms и зарегистрировал её в register_shutdown_function. SMS отправляется в самом конце(как и положено) и я даже успеваю показать юзеру какую-то другую страничку. Однако, когда обрабатывается сама функция отправки сообщения, браузер продолжает висеть.  Если в начале скрипта добавить session_regenerate_id, то юзер может продолжить навигацию (вроде как я хотел), однако юзер разлогиневается (сессия теряется). Возможно это еще приколы настройки моего php.ini, однако мало в это верится.

Распаралеливание на стороне клиента (ajax, новое окно браузера) не предлагать.

Как вариант, можно вызвать на стороне сервера /usr/bin/php /var/www/sendsms.php & > /dev/null  (но мне этот вариант тоже не очень нравится, т.к.
1) разрешать php исполнять файлы (exec, system) операционной системы - косяк в безопасности
2) не запустится на чужом хостинге (для меня не так важно, ибо у меня свой хост)


Содержание

Сообщения в этом обсуждении
"PHP register_shutdown_function виснет браузер"
Отправлено ne4to , 27-Дек-11 13:50 
>[оверквотинг удален]
> отправки смс достаточно долгий (20-40сек) хочется что бы юзеру не требовалось
> сидеть с зависшим браузером и ожидать окончание отправки.
> Сделал отдельную функцию отправки sms и зарегистрировал её в register_shutdown_function.
> SMS отправляется в самом конце(как и положено) и я даже успеваю
> показать юзеру какую-то другую страничку. Однако, когда обрабатывается сама функция отправки
> сообщения, браузер продолжает висеть.  Если в начале скрипта добавить session_regenerate_id,
> то юзер может продолжить навигацию (вроде как я хотел), однако юзер
> разлогиневается (сессия теряется). Возможно это еще приколы настройки моего php.ini, однако
> мало в это верится.
> Распаралеливание на стороне клиента (ajax, новое окно браузера) не предлагать.

таблица очереди смс .. по которой кроном проходит скрипт и отправляет смс ?


"PHP register_shutdown_function виснет браузер"
Отправлено JohnProfic , 28-Дек-11 19:54 
http://php.net/session_write_close ?

"PHP register_shutdown_function виснет браузер"
Отправлено VArtem , 27-Янв-12 18:41 
> http://php.net/session_write_close ?

Огромное спасибо. Реально помогло!!