Я об этом не нашёл статьи на хабре, по этому решил сделать пост. Ты узнаеш, как можно делать задачи в фоне и не мучить пользователя с ожиданием, например конвертации большого видео.
Как всё у тебя сейчас
1. %username% шлёт тебе запрос на сервер.
2. Скрипт смотрит, что тут идёт конвертация видео, отправка сообщения на email(подставить нужное) и ничего не покажет пока работа не закончиться.
Кэп, я как бы знаю, что у меня на сервере делается
Хорошо, хорошо… Давай посмотрим на твой код(я схематически):
Как мы видим пока всё не будет сделано, %username% не увидит ничего. Как нужно сделать:
Если у вас fastcgi измените свой код так:(если нет, бегите удаляйте апач, и поставьте уже nginx + php-fpm)
Сессии
Казалось бы, всё, но не тут то было… Если ты используеш сессии то нужно их закрывать. Всего-то перед fastcgi_finish_request добавить:
session_write_close();
чтоб, было как-то так:
По правилам, юзабилити, нужно ёще оповестить пользователя, если видео загружено и обработано. Так, например делает ВКонтакте.
Заключения
На этом всё, надеюсь я тебе помог.
комментарии (6)