Lo único que he visto en la documentación es que flush previene que los headers sean mostrados.
Si tengo:
Código PHP:
ob_start();
ob_implicit_flush(true);
set_time_limit(0);
ob_flush();
flush();
echo "muestra este texto antes de acabar la ejecución";
ob_end_flush();
sleep(4);
echo "este texto lo mostrará al acabar el script";
die;
Me funciona todo como se espera
Pero si pongo:
Código PHP:
ob_start();
ob_implicit_flush(true);
set_time_limit(0);
ob_flush();
flush();
header("HTTP/1.0 400 NOK");
ob_end_flush();
sleep(4);
echo "este texto lo mostrará al acabar el script";
die;
Muestra el 400 NOK al final del script y no antes, como en el primer ejemplo.