Здравствуйте! Пишу в представлении AJAX запрос к экшену контроллера, в контроллере выполняется долгий запрос со sleep(), проблема в том, что если во время работы php скрипта обновить страницу или перейти на другую страницу сайта, то все повиснет до тех пор пока не закончится выполнение php скрипта.
Пробовал выполнить этот AJAX запрос к отдельному файлу PHP где ставил sleep и также обновлять страницу, то все работает нормально. Получается надо как-то по другому выполнять длинные запросы к экшену. Подскажите в какую сторону нужно копать?
в представлении код
Yii::app()->clientScript->registerScript('loading', "
var timestamp = 0;
function WaitMessage()
{
$.ajax({
type: 'POST',
url: '/index.php/message/ajax',
data: {send:".$id.",timestamp:timestamp},
async: true,
cache: false,
success: function(data){
$('#message_container').html(data);
},
});
}
WaitMessage();
", CClientScript::POS_READY);
в экшене
public function actionAjax()
{
if(Yii::app()->request->isAjaxRequest && isset($_POST['send'])){
//пока не пройдет 20сек ничего сделать на сайте нельзя
sleep(20);
echo('Прошел!');
}
}
Пока вижу решение в создании отельного контроллера для ajax запроса.