我的ZF应用程序是否导致“请求超出了10个内部重定向的限制”错误?

时间:2013-01-09 05:46:55

标签: php apache zend-framework http-redirect redirect-loop

我们使用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.

如果我在error_log文件eg : 66.249.76.16中检查了某些IP的上述错误,我发现了6个结果,如果我检查了IP剥离它的最后两位数(66.249.76)我可以看到超过20个我们的error_log文件中的每天错误如上所述。

我认为,我应该解决的第一个问题是上面的“请求超出了由于可能的配置错误导致的10个内部重定向的限制。如果需要,使用'LimitInternalRecursion'来增加限制。使用'LogLevel debug'来获得回溯“Apache日志问题。

我们已经完成了日志,如上所述它每天都会发生,因此我需要找出实际导致此错误的代码。我们要求我们的服务器支持启用“Loglevel调试”(我对此不太熟悉),但在启用此功能后,我仍然看不到任何有用或错误日志的任何差异。

我的问题是 - 我该怎么做才能找到我们网站中的错误产生的位置?知道哪个PHP脚本(我们有100个)实际上使这个“请求超过了10个内部重定向的限制”重定向将会非常有用。

有关我如何进行的任何建议?

1 个答案:

答案 0 :(得分: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);