Hypoteticky, pokud potřebujete vytisknout všech 100 000 řádků v jediné odpovědi, měli byste nastavit PDO::MYSQL_ATTR_USE_BUFFERED_QUERY
na false
, spusťte dotaz a iterujte sadu výsledků jeden řádek po druhém pomocí fetch . Pro podrobnější vysvětlení ukládá php do vyrovnávací paměti celou sadu výsledků bez ohledu na to, zda zavoláte fetchAll() nebo ne, pokud PDO::MYSQL_ATTR_USE_BUFFERED_QUERY
je nastaveno na hodnotu true.
Výhodou je, že výrazně snížíte maximální spotřebu paměti skriptu a můžete začít streamovat výstup dříve, ačkoli celková doba dokončení může nebo nemusí trvat déle.
Ignoruji další věci, které byste měli vzít v úvahu za takových extrémních okolností, jako je ukládání do vyrovnávací paměti atd...