SQL запрос прерван сервером для таблицы с более чем 1 млн записей? - PullRequest
5 голосов
/ 21 ноября 2011

У меня есть веб-сайт, созданный в Magento, в котором около 1120 товаров.

Когда я выбираю пункт меню встроенного Magento: Отчеты -> Продукты -> Самые просматриваемые, затем введите диапазон дат и выберите «Показать по» = [День], я получаю ошибку тайм-аута. Но тот же отчет, но где «Показать по» = [Месяц] и «Показать по» = [Год], выполняется до конца, и отчет генерируется.

После расследования я обнаружил, что таблица [Report_Event] содержит более 1 миллиона записей. Когда я пытался запустить тот же запрос в PHPMyAdmin, я получаю сообщение: «SQL-запрос был прерван сервером».

Кто-нибудь сталкивался с этой ошибкой? Есть ли обходной путь или параметр, который необходимо применить?

1 Ответ

2 голосов
/ 24 ноября 2011

Попробуйте увеличить max_execution_time вашего сервера или скрипта. Чтобы сделать это для сервера - измените соответствующий параметр в php.ini. Чтобы сделать это в вашем скрипте, используйте ini_set(max_execution_time,$amount), где $amount - это время выполнения скрипта в секундах. Если вы хотите проверить, сколько времени это займет, используйте ini_set(max_execution_time,0). Здесь есть несколько хороших ответов - Об использовании ini_set ('max_execution_time', 0)

Что касается Magento, попробуйте поместить ini_set(max_execution_time,$amount) в начале index.php.

...