Привет, я пытаюсь выполнить запрос (действие) в фоновом режиме.Yii Php Выполнение асинхронного запроса фона
function actionRequest($id){
//execute very long process here in background but continue redirect
Yii::app()->user->setFlash('success', "Currently processing your request you may check it from time to time.");
$this->redirect(array('index', 'id'=>$id));
}
Что я пытаюсь добиться, чтобы НЕТ пользователя ожидающего за запрос будет обработан, так как он обычно занимает 5-10мин, и запрос обычно идет к тайм-аут, и даже если я установил тайм-аут дольше, ожидая 5-10 мин. не является хорошим пользовательским интерфейсом.
Таким образом, я хочу, чтобы сразу же вернулся на страницу, уведомляя пользователя о том, что его/ее запрос обрабатывается, пока он все еще может просматривать и делать другие вещи в приложении, после чего он может вернуться к и убедитесь, что его/ее запрос обработан.
Я изучал расширения Yii backjob. Он работает, перенаправление выполняется немедленно (как-то фоновый запрос), но при выполнении других действий, например, навигации по сайту, он не загружается, и кажется, что запрос все еще существует, и я не могу продолжать использовать приложение до тех пор, пока запрос не будет завершен.
Аналогичное расширение runactions обещает то же самое, но я даже не мог заставить его работать, он говорит, что он «касается url», как огонь, и забывает работу, но не работает.
Я также попытался разобраться в организации очередей сообщений услуги, такие как Gearman, RabbitMQ, но на самом деле сугубо технический, я даже не мог установить Gearman в моем окна машины так «сельское хозяйство» услуги не будет работать для меня. Некоторые ответы на фоновую обработку включают CRON и AJAX, но это звучит не слишком хорошо, плюс множество проблем.
Есть ли другой способ обхода асинхронной обработки? Я действительно искал этого, и я действительно не ищу продвинутых/сложных решений, таких как «работа над несколькими машинами» и т. Д. Спасибо Большое!