После получения запроса AJAX я хочу дать отзыв пользователю перед тем, как закончится PHP-скрипт, потому что он занимает много времени.Как продолжить сценарий после ответа AJAX пользователю в Yii2?
я подумал, что send()
метод yii\web\Response
объекта было сделано для того, чтобы я попытался следующие действия внутри контроллера:
Yii::$app->response->format = Response::FORMAT_JSON;
Yii::$app->response->data = [ 'success' => $someData ];
Yii::$app->response->send();
// code that takes long
sleep(5);
Ответ передается, но после сна в течение 5 секунд.
же повезло с:
ob_start();
echo json_encode([ 'success' => $someData ]);
header('Connection: close');
header('Content-Type: application/json');
header('Content-Length: '.ob_get_length());
ob_end_flush();
flush();
// code that takes long
sleep(5);
У меня не было никакой уверенности в этом последнем коде рабочего внутри действия контроллера, но я его в первый ... Что мне не хватает?
EDIT: Я использую Nginx + PHP_FPM
Благодарим за ответ. Я не совсем уверен, что это то, что я ищу. Мне нужно время, чтобы вникать в эту тему, но я обязательно вернусь. – David