Вывод потока Laravel не работает должным образомPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Вывод потока Laravel не работает должным образом

Сообщение Anonymous »


В laravel 10 используйте такой код:

// PHP используйте Symfony\Component\HttpFoundation\StreamedResponse; поток публичной функции() { $response = новый StreamedResponse(function() { для ($i = 0; $i < 100; $i++) { $json = ['код' => $i]; эхо json_encode($json) . "\n\n"; ob_flush(); румянец(); } }); $response->headers->set('Content-Type', 'text/event-stream'); $response->headers->set('X-Accel-Buffering', 'no'); $response->headers->set('Cach-Control', 'no-cache'); вернуть $ответ; } // js выборка('/тест/поток', { метод: «пост», заголовки: { «Тип контента»: «приложение/json», 'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]')['content'] }, }) .then(ответ => { константный поток = response.body; const decoder = новый TextDecoder('utf-8'); константный читатель = поток.getReader(); return reader.read().then(functionprocessText({сделано, значение}) { если (сделано) { возвращаться; } // console.log(значение) const json = decoder.decode(значение); консоль.log(JSON) вернуть reader.read().then(processText); }) }) Из console.log(json) я вижу, что он выводит несколько строк json за один цикл, и их число не является постоянным. Но в PHP я использую строку flush() в каждом цикле, и она должна немедленно выводить одну строку json, верно?


Изображение

Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»