sql >> Database >  >> RDS >> Mysql

190.000 rijen uit MySQL halen met PHP, lege pagina? Geheugen of buffer?

Kohana terzijde schuivend, omdat ik het nog nooit heb gebruikt, wat je momenteel doet is eigenlijk dit:

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

D.w.z. je haalt alle gegevens uit MySQL met mysql_fetch_assoc en sla ze allemaal op in het geheugen van PHP door het in $data te duwen . Dat betekent dat PHP voldoende geheugen moet hebben om alle gegevens tegelijk op te slaan, wat niet het geval is.

Wat u wilt doen, is een resultaatrij ophalen uit MySQL, er iets mee doen en vervolgens doorgaan naar de volgende rij zonder alles in één keer in het geheugen op te slaan:

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

En nee, gebruik alstublieft niet de verouderde mysql_ API, het is hier slechts het voorbeeld van de grootste gemene deler. Er moet ook een betere manier zijn om te doen wat je wilt doen dan te proberen 190.000 rijen tegelijk op te halen en uit te voeren.



  1. Indexen in MySQL begrijpen:deel drie

  2. Nieuwe tafel voor elke gebruiker?

  3. Hoe NIET REGEXP werkt in MySQL

  4. Hoe SQLite Random() werkt