sql >> Databáze >  >> RDS >> Mysql

Získání 190 tisíc řádků z MySQL pomocí PHP, prázdná stránka? Paměť nebo vyrovnávací paměť?

Když odložím Kohana stranou, protože jsem ji nikdy nepoužil, to, co momentálně děláte, je v podstatě toto:

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

Tj. všechna data získáváte z MySQL pomocí mysql_fetch_assoc a uložte je všechny do paměti PHP vložením do $data . To znamená, že PHP potřebuje mít dostatek paměti k uložení všech dat najednou, což nemá.

Co chcete udělat, je načíst jeden výsledný řádek z MySQL, něco s ním udělat a pak přejít na další řádek, aniž byste vše ukládali do paměti najednou:

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

A ne, prosím nepoužívejte zastaralé mysql_ API, je to jen největší příklad společného jmenovatele. Také musí existovat lepší způsob, jak dělat, co chcete, než se snažit načíst a vytisknout 190 000 řádků najednou.



  1. Jak zabránit PostgreSQL ve změně mých pěkně naformátovaných definic SQL

  2. Jak získám poslední záznam v databázové tabulce MySQL pomocí PHP?

  3. java - mysql - výběr výstupního souboru dotazu - kam se soubor ukládá

  4. Python MySQL - SELECTy fungují, ale ne DELETE?