Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Pobieranie 190k wierszy z MySQL za pomocą PHP, pusta strona? Pamięć czy bufor?

Odkładając Kohanę na bok, ponieważ nigdy jej nie używałem, to, co obecnie robisz, to w zasadzie:

$result = mysql_query(...);
$data   = array();
while ($row = mysql_fetch_assoc($result)) {
    $data[] = $row;
}

Tj. pobierasz wszystkie dane z MySQL za pomocą mysql_fetch_assoc i przechowuj je wszystkie w pamięci PHP, umieszczając je w $data . Oznacza to, że PHP musi mieć wystarczająco dużo pamięci, aby przechowywać wszystkie dane na raz, czego nie ma.

To, co chcesz zrobić, to pobrać jeden wiersz wyników z MySQL, zrobić coś z nim, a następnie przejść do następnego wiersza bez zapisywania wszystkiego w pamięci naraz:

$result = mysql_query(...);
while ($row = mysql_fetch_assoc($result)) {
    echo $row['foo'];
}

I nie, nie używaj przestarzałego interfejsu API mysql_, to po prostu największy przykład wspólnego mianownika. Ponadto musi istnieć lepszy sposób na zrobienie tego, co chcesz, niż próba pobrania i wyprowadzenia 190 000 wierszy naraz.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MYSQL Data Godzina Od zaokrąglenia do najbliższej godziny

  2. Flask-Sqlalchemy Brakujący BEGIN wydaje się powodować brak synchronizacji sesji

  3. Wyłącz notację naukową MySQL

  4. Jakie są zalety UPDATE LOW_PRIORITY i INSERT DELAYED INTO?

  5. Czy istnieje możliwość słuchania na stole/polu sql z wielbłądem?