bjyoungblood/bjyprofiler

此软件包已被弃用,并且不再维护。没有建议的替代软件包。
此软件包的最新版本(v1.1.0)没有提供许可证信息。

Zend\Db 数据库分析器(也是 ZendDeveloperTools 的插件)

v1.1.0 2014-03-11 13:42 UTC

This package is not auto-updated.

Last update: 2021-01-14 21:13:07 UTC


README

为 Zend\Db 提供数据库查询分析扩展的适配器,以及类似于 ZF1 的 Zend_Db_Profiler 的分析器。我从 ZF1 的 Zend_Db 中迁移了大量代码。

注意:此模块现在与 Zend\Db 的内置分析器兼容。

注意:为了使用查询分析中的堆栈跟踪,需要 PHP >= 5.3.6。

Composer/Packagist 用户

请注意,为了符合 composer/packagist 的新命名规范,此项目的软件包名称已更改为 bjyoungblood/bjy-profiler。请更新您的 composer.json 以使用新的软件包名称。

配置与使用

以下是一个示例数据库配置

<?php

$dbParams = array(
    'database'  => 'changeme',
    'username'  => 'changeme',
    'password'  => 'changeme',
    'hostname'  => 'localhost',
    // buffer_results - only for mysqli buffered queries, skip for others
    'options' => array('buffer_results' => true)
);

return array(
    'service_manager' => array(
        'factories' => array(
            'Zend\Db\Adapter\Adapter' => function ($sm) use ($dbParams) {
                $adapter = new BjyProfiler\Db\Adapter\ProfilingAdapter(array(
                    'driver'    => 'pdo',
                    'dsn'       => 'mysql:dbname='.$dbParams['database'].';host='.$dbParams['hostname'],
                    'database'  => $dbParams['database'],
                    'username'  => $dbParams['username'],
                    'password'  => $dbParams['password'],
                    'hostname'  => $dbParams['hostname'],
                ));

                if (php_sapi_name() == 'cli') {
                    $logger = new Zend\Log\Logger();
                    // write queries profiling info to stdout in CLI mode
                    $writer = new Zend\Log\Writer\Stream('php://output');
                    $logger->addWriter($writer, Zend\Log\Logger::DEBUG);
                    $adapter->setProfiler(new BjyProfiler\Db\Profiler\LoggingProfiler($logger));
                } else {
                    $adapter->setProfiler(new BjyProfiler\Db\Profiler\Profiler());
                }
                if (isset($dbParams['options']) && is_array($dbParams['options'])) {
                    $options = $dbParams['options'];
                } else {
                    $options = array();
                }
                $adapter->injectProfilingStatementPrototype($options);
                return $adapter;
            },
        ),
    ),
);

在运行几个查询(或如果选择,在运行之前)后,您可以使用服务定位器通过提供的任何别名来获取适配器(使用 Zend\Db\Adapter\Adapter 是简单替换 Zend\Db 的适配器为我的分析适配器的一种好方法)。

$profiler = $sl->get('Zend\Db\Adapter\Adapter')->getProfiler();
$queryProfiles = $profiler->getQueryProfiles();