Неустранимая ошибка: максимальное время выполнения 60 секунд превышено в \ doctrine \ lib \ Doctrine \ Collection.php в строке 462 - PullRequest
1 голос
/ 27 января 2010

Что это? мой запрос:

    Doctrine_Query::create()
                ->select('rec.*')
                ->from('Records rec')                   
                ->execute();

Таблица записей содержит более 20 тыс. Строк.

При выполнении запроса на странице я получаю сообщение об ошибке:

     Fatal error: Maximum execution time of 60 seconds exceeded in \doctrine\lib\Doctrine\Collection.php on line 462

Редактировать но для извлечения значений из таблицы, имеющей записи более 20 КБ, требуется более 60 секунд. Почему ?? И я использую ту же таблицу для получения некоторых других записей с предложением where, он отлично работает ..

Структура таблицы:

 CREATE TABLE IF NOT EXISTS `records` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `state` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `city` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `school` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=16334 ;

база данных является локальной.

Мы можем сделать одну вещь, мы можем выбрать один элемент. как: город ... Я пытался, что даже тогда он дает ту же ошибку ..

Количество строк равно 16333 (точно), а количество столбцов равно 4, как указано в структуре таблицы.

Кто-нибудь, кто может сказать мне, как это решить ??? означает, почему он не работает .. MySQL простой запрос выбора работает отлично ..

EDIT ----

Кто-нибудь может объяснить, почему он / она проголосовали за мой вопрос "отрицательно"

Ответы [ 3 ]

3 голосов
/ 28 января 2010
Doctrine_Query::create()
            ->select('rec.*')
            ->from('Records rec')                   
            ->limit(5000)
            ->execute();

Попробуйте это .. Это будет нормально работать, но увеличьте лимит, тогда вы столкнетесь с проблемами. Извлечение стольких записей вызовет проблемы. Идея об этом .. Может быть, кто-то здесь может помочь вам.

1 голос
/ 26 февраля 2010

В файле php.ini установки вашего сервера вы найдете параметр конфигурации max_execution_time = 60.

Попробуйте установить max_execution_time = 240 или даже выше.

Не забудьте перезапустить ваш веб-сервер после редактирования php.ini, чтобы файл был прочитан.

1 голос
/ 05 февраля 2010

Когда вы добавляете предложение where в вашу БД, это может привести к тому, что она будет использовать индексы, что значительно облегчит работу с механизмом БД. Как правило, плохой идеей является одновременное получение всей таблицы за один запрос к БД, хотя это может быть целесообразно для небольших таблиц. Если вы захватываете всю таблицу одновременно, это намекает на то, что вы неправильно используете БД, возможно, рассматривая ее как прославленную файловую систему. В общем, тенденция должна заключаться в том, чтобы захватывать только то, что вам нужно, и, где это возможно, из-за глобальных операций и обновлений на конце БД.

Все это говорит о том, что 60-е годы для 20 000 записей кажутся очень медленными. Вы можете проверить, правильно ли сконфигурирована ваша БД (например, использовать достаточно ОЗУ и все такое). Вы можете найти полезный сценарий mysqltuner для Perl на http://mysqltuner.pl полезным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...