Zend Framework网站挂起

时间:2011-11-22 18:30:15

标签: php apache zend-framework

我已经在Apache服务器上使用ZF 1.11站点进行了几个月的测试。我今天早上尝试运行一些测试,我的网站刚刚挂起(输入网址,我的浏览器只是说等待来自...的回复)。我很擅长修复代码中的异常,但我从来没有得到异常。我肯定已经改变了一些东西,但到目前为止,我已经花了5个小时,而且我被卡住了。

我已将网站从https切换为http(并多次重启httpd)。

我刷新了我在生产服务器上工作的所有PHP代码(使用不同的证书克隆dev服务器。)

我在httpd conf文件中将日志记录更改为debug。

当我点击服务器时,我可以在日志中看到调试消息:

[Tue Nov 22 12:40:25 2011] [debug] proxy_util.c(1818): proxy: grabbed scoreboard slot 0 in child 30181 for worker proxy:reverse
[Tue Nov 22 12:40:25 2011] [debug] proxy_util.c(1837): proxy: worker proxy:reverse already initialized
[Tue Nov 22 12:40:25 2011] [debug] proxy_util.c(1934): proxy: initialized single connection worker 0 in child 30181 for (*)

每次刷新浏览器时,我都可以看到Bootstrap.php文件的访问时间发生了变化。 查看了httpd日志,我看到了请求,但我看到的只是请求。

有时我控制器上的修改时间(IndexController.php)会更新但不总是?

我在我的Bootstrap中初始化记录器,所以我添加了一个调用来打印一条消息,说明该行已被命中。在浏览器中产生异常消息的拼写错误之后,我现在有时会在我的日志中收到消息......但并非总是如此。

我可以通过浏览器访问我的public / images目录中的文件就好了。此服务器上的另一个站点也可以使用。

我更新了php.ini以将调试消息发送到syslog,除了我上面提到的异常。我没有看到任何错误。

我认为我需要的是如何遵循Zend框架流程的一些指导。我猜这个问题是在Bootstrap中或之后不久。这是我的Bootstrap.php。这很简单。

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap {

    // anything here that starts with "_init" will be run at startup

    protected function _initSession() {
        $doctypeHelper = new Zend_View_Helper_Doctype();
        $doctypeHelper->doctype('XHTML1_TRANSITIONAL');

        Zend_Session::start();

    }

    protected function _initLog() {
        $options = $this->getOptions();
        $logpath = $options['logpath'];

        $logger = new Zend_Log();
        $writer = new Zend_Log_Writer_Stream($logpath);
        $logger->addWriter($writer);

        Zend_Registry::set("logger", $logger);

        $logger->log("Bootstrap.php - initLog complete", Zend_Log::INFO);
    }

    public function _initDbAdapter() {
        $resource = $this->getPluginResource('multidb');
        $resource->init(); // Don't forget to initialize the resource first

        $cpDB = $resource->getDb('cp');
        $openfireDB = $resource->getDb('openfire');

        Zend_Registry::set('cpDB', $cpDB);
        Zend_Registry::set('openfireDB', $openfireDB);

    }
}

任何指针都会受到赞赏。

2 个答案:

答案 0 :(得分:1)

我们遇到了一个与新服务器部署非常类似的问题,并关闭了IPV6修复它。

答案 1 :(得分:0)

这不是php错误。是Apache的一个,可能与Apache升级有关。尝试在Apache中禁用代理相关的模块。请参阅此discussion

a2dismod proxy proxy_connect proxy_ftp proxy_http  proxy_ajp proxy_balancer proxy_html proxy