Является ли мое приложение ZF причиной ошибки "Превышен лимит в 10 внутренних перенаправлений"?
У нас есть сайт электронной коммерции, разработанный с ZendFrameWork v1.10. Иногда сайт загружается очень медленно, и многие страницы вообще не загружаются, и время ожидания истекло. Загрузка домашней страницы занимает более 15 секунд, и многие страницы продукта вообще не загружаются, а просто перестают работать.
Часто в этом случае мы перезагружаем наш сервер Apache и сайт как обычно. Затем мы спросили поставщиков серверов, они сказали, что состояние нашего сервера хорошее, и они показывают состояние нашего сервера следующим образом.
(~) # uptime
12:00:17 up 655 days, 10:51, 2 users, load average: 0.87, 0.65, 0.58
(~) # uptime
12:00:29 up 177 days, 6:46, 1 user, load average: 0.64, 0.53, 0.47
Также они посоветовали нам проверить наш сервер error_log, поскольку они обнаружили, что на него загружается много ошибок php. Когда мы проверяем сервер erro_log и его старые файлы. Мы нашли много следующих ошибок во всех наших файлах журнала.
[Sun Dec 30 02:35:32 2012] [error] [client 66.249.76.16] Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.
Если я проверил вышеупомянутую ошибку для определенного IP в файле error_log eg : 66.249.76.16
Я нашел 6 результатов, и если я проверил IP, удаляя последние две цифры из него (66.249.76)
Я могу видеть более 20 ошибок в день, как указано выше, в нашем файле error_log.
Я думаю, что первая проблема, которую я должен решить, - это вышеприведенное "Запрос превысил предел 10 внутренних перенаправлений из-за возможной ошибки конфигурации. Используйте LimitInternalRecursion", чтобы увеличить предел при необходимости. Используйте "LogLevel debug", чтобы получить обратную трассировку "Журнал Apache проблема.
Мы просмотрели журналы, и это происходит ежедневно, как упоминалось выше, поэтому мне нужно выяснить, какой код на самом деле вызывает эту ошибку. Мы попросили нашу серверную поддержку включить "Отладку логического уровня" (я не слишком знаком с этим), но я все еще не вижу ничего полезного или какого-либо различия в нашем журнале ошибок после включения этого.
Мой вопрос - что я могу сделать, чтобы узнать, где на нашем сайте генерируется эта ошибка? Было бы очень полезно узнать, какой PHP-скрипт (у нас есть 100-е) на самом деле вызывает перенаправление "Запрос превысил предел 10 внутренних перенаправлений".
Любые рекомендации о том, как я могу действовать?
1 ответ
У нас также были некоторые проблемы, как это. Мы сделали запись в index.php, которая дала нам довольно хорошее представление о том, какой запрос вызывает проблему. Вы можете реализовать то же самое и проверить, какие запросы занимают больше всего времени выполнения.
<?php
define('EXECUTION_START', microtime(true));
.
.
.
// Create application, bootstrap, and run
$application = new Zend_Application(
APPLICATION_ENV,
APPLICATION_PATH .DS. 'configs'.DS.'application.ini'
);
$application->bootstrap()
->run();
$endTime = microtime(true);
$executionTime = $endTime-EXECUTION_START;
$ipaddress = $_SERVER['REMOTE_ADDR'];
$url = $_SERVER['REQUEST_URI'];
$logString="$ipaddress|$url|$startTime|$endTime|$executionTime\n";
$file = 'executiontime.txt';
file_put_contents($file, $logString, FILE_APPEND | LOCK_EX);