Выборка из таблицы 1500000 строк не выводится

Статус
В этой теме нельзя размещать новые ответы.

new_forward

Профессор
Регистрация
5 Май 2008
Сообщения
673
Реакции
44
Доброго времени суток, с таким еще не сталкивался на своем опыте... обычный код, в таблице 1500000 строк:
Код:
$result = mysql_query("SELECT * FROM table");
while($row = mysql_fetch_assoc($result)){

    $tags[] = $row;

}

print_r($tags); exit;

Массив просто не выводится, если ограничить вывод до 100000 то выводится... Чего ему не хватает не понятно....
 
Памяти например не хватает.
Не только количество строк имеет значение, но и размер этих строк.

Какую-нибудь ошибку выводит скрипт?

error_reporting(e_all & e_notice) установлен?
 
Запускаю через ssh, никаких ошибок не выводит
 
Запускаю через ssh, никаких ошибок не выводит
Об ограничениях на размер потока вывода PHP не слышал - про ssh не знаю, всё же высока вероятность падения по лимиту памяти
Включи вывод ошибок - Для просмотра ссылки Войди или Зарегистрируйся

Попробуй построчный принт (это правда замедлит общее выполнение скрипта, но зато по лимиту памяти не упадёт:(
PHP:
$result = mysql_query("SELECT * FROM table");
while($row = mysql_fetch_assoc($result)){

    print_r($row);

}
exit;
 
  • Нравится
Реакции: Nei
Непонятно зачем такой вывод — ведь отвалится же по таймауту или памяти.
Получается — создаете 2 массива, даете сильную нагрузку.
Используйте лимит хотя бы по 1000 строк:
$result = mysql_query("SELECT * FROM table LIMIT 0,1000");

Только сначала нужно посчитать сколько строк вообще:
$count = mysql_query("SELECT COUNT(*) AS `cnt` FROM table");

Ну а потом уже делать выборку частями по количеству $count['cnt']
 
Да, памяти маловато...

Fatal error: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 79 bytes) in /var/www/data/www/fix_tag.php on line 60

Сократил таблицу на один столбец, трафик уменьшился, соответственно памяти стало меньше есть в два раза...все заработало.

Всем спасибо!
 
Последнее редактирование:
Да, памяти маловато...
Fatal error: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 79 bytes) in /var/www/data/www/fix_tag.php on line 60
Почему бы не отказаться (желательно на всегда, вообще на всегда) от "SELECT * FROM table" в пользу "SELECT field1, field2, ... FROM table"
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху