Olen uudella palvelimella yrittänyt saada php flushia toimimaan.
Palvelimella (php 7.4.33) on laitettu output_buffering päälle mutta se ei auttanut.
Onko vika tuossa koodissa vai pitääkö php.iniä vielä säädellä?
Mitä halusit tapahtuvan, ja millä tavalla ei toimi?
Jos tavoitteena on saada sisältö suoraan selaimelle, niin PHP:n puskurointi (output buffering) vaikuttaa tähän enintään kielteisesti ja PHP:n asetusten lisäksi pitäisi tutkia HTTP-palvelimen asetukset, selaimen asetukset sekä kaikki näiden välillä oleva. Ylipäänsä tuollainen viivytysviritelmä on todellakin viritelmä, ja nykyaikaisempaa olisi tuottaa heti toimiva sivu ja jatkaa hitaampaa lataamista sitten vaikka JS:n fetch-funktiolla.
Tuo oli testi esimerkki.
Toimivassa sivustossa on pitkä php-kysely jonka suorittaminen vie minuutin niin tuon flushin avulla olen saanut osan sivustosta näkyviin jonka aikana tuo pitkä php-komentosarja ajetaan läpi ja tulokset päivitetään javascriptillä sivustoon.
Niin tuossa testi esimerkissä 'Flushed, wait 3sec' ei tulostu flush-komennolla vaan kaikki tulostukset tulevat yhtäaikaa.
Koodissasi ei ole suoranaista vikaa mutta ideassa on. PHP ei ole suoraan yhteydessä selaimeen, vaan tieto kulkee HTTP-palvelimen välityksellä, ja siksi pelkästään PHP-koodilla et voi taata tiedon siirtymistä käyttäjälle asti. Esimerkiksi kaikki nykyaikaan kuuluva pakkaus ja kryptaus tai ihan vain HTTP-palvelimen sisäinen optimointi voi aiheuttaa ylimääräistä puskurointia, jota ei voi PHP:n puolella hallita. Ihan tulevaisuuttakin ajatellen kannattaa hankkiutua tuosta flush-viritelmästä eroon saman tien. Laita suosiolla se hidas kysely eri skriptiksi ja hae se fetchillä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.