Hipotetycznie, jeśli chcesz wyprowadzić wszystkie 100 000 wierszy w jednej odpowiedzi, powinieneś ustawić PDO::MYSQL_ATTR_USE_BUFFERED_QUERY
na false
, wykonaj zapytanie i powtórz zestaw wyników po jednym wierszu na raz, używając pobierz . Aby rozwinąć, php buforuje cały zestaw wyników niezależnie od tego, czy wywołasz fetchAll(), jeśli PDO::MYSQL_ATTR_USE_BUFFERED_QUERY
ma wartość prawda.
Zaletą jest to, że drastycznie zmniejszasz maksymalne zużycie pamięci przez skrypt i możesz szybciej rozpocząć przesyłanie strumieniowe, chociaż całkowity czas do zakończenia może potrwać dłużej lub nie.
Ignoruję inne rzeczy, które należy wziąć pod uwagę w tak ekstremalnych okolicznościach, takie jak buforowanie wyjścia itp.