michaelesmith / event-data-bundle

允许轻松使用 EventData 库

安装: 59

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 2

分支: 0

公开问题: 0

类型:symfony-bundle

dev-master / 0.1.x-dev 2014-09-02 02:31 UTC

This package is auto-updated.

Last update: 2024-09-19 10:29:15 UTC


README

这是什么?

这是一个库,通过向Web性能分析器添加面板来实现 EventData 库(https://github.com/michaelesmith/EventData)的集成。

安装

使用Composer(推荐

获取Composer:https://getcomposer.org.cn

php composer.phar require "michaelesmith/event-data-bundle" "dev-master"

示例

示例配置

# app/config/config.yml
    events_storage:
        class: MS\EventData\Storage\KeenIO
        arguments: [ @keen_io ]

    events_logger:
        class: MS\EventData\Logger\PSRLogger
        arguments: [@logger, @events]

    events_logger_generic:
        class: MS\EventData\Logger\GenericLogger

    events_data_collector:
        class: MS\Bundle\EventDataBundle\DataCollector\EventDataCollector
        arguments: [@events, @events_logger_generic]
        tags:
            - { name: data_collector, template: "MSEventDataBundle:Collector:events", id: "event_data" }

    events_data_listener:
        class: MS\Bundle\EventDataBundle\EventListener\EventDataListener
        arguments: [@events]
        tags:
            -
                name: kernel.event_listener
#                event: kernel.finish_request
                event: kernel.terminate
                method: flush
                priority: 0

    events:
        class: MS\EventData\EventDataManager
        arguments: [@events_storage]
        calls:
            - [addLogger, [@events_logger]]
            - [addLogger, [@events_logger_generic]]
            - [setDebug, [%kernel.debug%]]
            - [setDelayed, ["@=not parameter('kernel.debug')"]]

要使用 keen 存储,您需要要求 keenIO 包:"keen-io/keen-io-bundle": "~1.0"。这还配置了一个 PSRLogger,使用默认的记录实例。通用的记录器由性能分析器面板使用。数据收集器是驱动性能分析器面板的力量。事件监听器允许在将响应发送给用户之后刷新事件,以防止延迟。为了使数据收集器具有响应,您需要使用 kernel.finish_request,它在响应发送之前被调用,在生产中应使用 kernel.terminate,它在响应发送后被调用。

在操作中使用它,您可以简单地这样做

$this->container->get('events')->store(new Event('page_view', array('homepage')));

传递给它的事件类可以是实现了 \MS\EventData\Event\EventInterface 或扩展 \MS\EventData\Event\Event 的任何东西。我发现使用自己的事件类很有帮助,这样它可以自动添加数据,如当前时间、用户IP或已登录用户名。