sql >> Database teknologi >  >> RDS >> Mysql

Få fat i 190.000 rækker fra MySQL ved hjælp af PHP, tom side? Hukommelse eller buffer?

Hvis du lægger Kohana til side, fordi jeg aldrig har brugt det, er det, du gør i øjeblikket, dybest set dette:

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

dvs. du får alle data fra MySQL med mysql_fetch_assoc og gem dem alle i PHP's hukommelse ved at skubbe det ind i $data . Det betyder, at PHP skal have nok hukommelse til at gemme alle data på én gang, hvilket det ikke har.

Det du vil gøre er at hente en resultatrække fra MySQL, gøre noget med den og derefter gå videre til næste række uden at gemme alt i hukommelsen på én gang:

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

Og nej, brug venligst ikke den forældede mysql_ API, det er bare det største fællesnævner eksempel her. Der skal også være en bedre måde at gøre, hvad du vil, end at prøve at hente og udskrive 190.000 rækker på én gang.



  1. Er det muligt at OPDATERE en JOINed tabel ved hjælp af Codeigniters Active Record?

  2. Er JPA (EclipseLink) tilpassede typer mulige?

  3. Hvordan får man vist alle metadata for kolonner i en tabel i Oracle-databasen?

  4. SQL Server:To-niveau GROUP BY med XML-output