【问题标题】:How to establish persistent connection with log4php Appender PDO?如何与 log4php Appender PDO 建立持久连接?
【发布时间】:2013-10-01 18:46:38
【问题描述】:

大家好,我是新来的,这是我的第一篇文章。我有一个带有 log4php 的项目,但无法建立持久连接。

是否可以通过log4php中的配置与LoggerAppenderPDO建立持久连接(pconnect)?有可能吗?

我尝试在以下配置中添加“选项”,但它不起作用:

array(
    'appenders' => array(
        'default' => array(
            'class' => 'LoggerAppenderPDO',
            'params' => array(
                'dsn' => "mysql:host=localhost;dbname=logdb",
                'user' => 'logger',
                'password' => 'admin',
                'options' => array(PDO::ATTR_PERSISTENT => true),
                'table' => 'log4php'
            )
        )
    ),
    'rootLogger' => array(
        'appenders' => array('default'),
    ),
);

有人可以帮帮我吗?我真的很感激。

【问题讨论】:

    标签: pdo persistent appender log4php


    【解决方案1】:

    问题是:“为什么需要持久连接?”

    Log4PHP 只会在请求期间尝试创建一个记录连接,因此在请求期间持久连接不会产生任何影响。

    第二件事是:只有当 PHP 作为 Apache 模块运行时,才能创建持久连接。所有其他情况都不支持它们。

    第三:如果使用不当,持久连接弊大于利。一方面是对于最终运行的每个 apache 子节点,数据库必须提供永久连接能力。因此,如果您的 Apache 允许 100 个子节点,那么您的数据库必须支持至少 100 个并发连接,仅用于日志记录。而且您可能需要更多连接,因为您不仅要进行日志记录,还要对数据库进行一些有用的操作。另一点是,如果您的脚本崩溃,则连接保持打开状态,这可能意味着未释放锁定或未取消事务。最后但并非最不重要的一点是:重用持久连接会在它留下的状态下使用它 - 这可能不是你想象的那样。

    第四:与 MySQL 的持久连接并不比常规连接快多少,如果有的话。 MySQL 经过优化以支持快速连接时间(其他数据库可能并非如此)。

    所以说到底,使用持久连接的动机并不多。如果您出于模糊的“性能原因”坚持使用它们,您应该通过衡量它们对您的应用程序性能的影响来证明它们是值得的。

    更新:我想我可以添加this performance comparison states that using persistent connections does NOT improve performance in any way。您的里程可能仍会有所不同。

    【讨论】:

    • 我注意到,由于 db 连接,页面构建速度较慢。我相信这是因为 LoggerAppenderPDO 每次尝试建立一个数据库连接。如果我关闭这个特定的附加程序,页面会显示得更快。我有信心为持久连接选择正确的设计。我只需要知道怎么做。你有什么建议让我自己看看吗?
    • 到目前为止,您没有数据支持您的声明。请记住,日志记录不仅是创建数据库连接,而且还执行查询。这些占用了大部分时间,因此如果您关闭注销,当然会有时间差。您使用的是哪个存储引擎? MyISAM、InnoDB 还是 ARCHIVE?
    • 嗨,Sven,我正在使用 InnoDB,现在正在我的本地机器上进行测试。好吧,事实上我什至没有记录数据。我所做的只是获取记录器对象的实例并传递配置,因此它建立了与数据库的连接: Logger::getLogger('allLoggers')->configure($config);此时没有日志发生,只有一个连接。
    • 你的代码看起来很奇怪?您真的是先获取记录器,然后再尝试配置它吗?那是错误的方式。您必须首先使用静态调用配置 Logger 对象,然后获取所需的记录器对象 - 然后配置它们。
    猜你喜欢
    • 1970-01-01
    • 2019-03-04
    • 2018-10-19
    • 1970-01-01
    • 2011-10-26
    • 2014-09-08
    • 2021-04-19
    • 1970-01-01
    • 2011-05-09
    相关资源
    最近更新 更多