Mysql
 sql >> база данни >  >> RDS >> Mysql

Грабване на 190 хиляди реда от MySQL с помощта на PHP, празна страница? Памет или буфер?

Като оставим Kohana настрана, защото никога не съм го използвал, това, което правите в момента, е основно това:

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

т.е. получавате всички данни от MySQL с mysql_fetch_assoc и ги съхранете всички в паметта на PHP, като го поставите в $data . Това означава, че PHP трябва да има достатъчно памет, за да съхранява всички данни наведнъж, което няма.

Това, което искате да направите, е да извлечете един ред с резултати от MySQL, да направите нещо с него, след което да преминете към следващия ред, без да съхранявате всичко в паметта наведнъж:

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

И не, моля, не използвайте остарелия mysql_ API, това е просто най-големият пример за общ знаменател тук. Освен това трябва да има по-добър начин да правите каквото искате, отколкото да се опитвате да извлечете и изведете 190 000 реда наведнъж.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Използването на SUM, така че NULL в колоните, прави сумата NULL

  2. Fluent Nhibernate:Не може да се създаде връзка с база данни с MySQL

  3. Добавяне на нова SQL колона със стойност по подразбиране

  4. MySQL подрежда диапазон от време до началото, след което подрежда всичко останало по други критерии

  5. Как мога да оптимизирам тази заявка, отнема повече от минута за изпълнение