Mysql
 sql >> Datenbank >  >> RDS >> Mysql

190.000 Zeilen aus MySQL mit PHP abrufen, leere Seite? Speicher oder Puffer?

Abgesehen von Kohana, weil ich es noch nie benutzt habe, machst du derzeit im Grunde Folgendes:

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

D.h. Sie erhalten alle Daten von MySQL mit mysql_fetch_assoc und speichern Sie sie alle im Speicher von PHP, indem Sie sie in $data schieben . Das bedeutet, dass PHP genügend Speicher haben muss, um alle Daten auf einmal zu speichern, was es nicht hat.

Was Sie tun möchten, ist, eine Ergebniszeile aus MySQL abzurufen, etwas damit zu tun und dann zur nächsten Zeile überzugehen, ohne alles auf einmal im Speicher zu speichern:

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

Und nein, bitte verwenden Sie nicht die veraltete mysql_-API, sie ist hier nur das Beispiel mit dem größten gemeinsamen Nenner. Außerdem muss es einen besseren Weg geben, alles zu tun, was Sie tun möchten, als zu versuchen, 190.000 Zeilen auf einmal abzurufen und auszugeben.