zhem4ag/event-snoozer
Composer 安装命令:
composer require zhem4ag/event-snoozer
包简介
Snooze your events for later dispatch.
README 文档
README
EventSnoozer
Current library allows You to store events and dispatch them later.
Usage
-
Implement EventStorageInterface or use MemoryEventStorage. I suggest to use database or cache for storing events. For example, I'll use MemoryEventStorage.
It will store snoozed events until script stop running. -
Create event class that you want to save. You could extend EventDispatcher Event class, but if you want to specify additional data and/or priority, extend RealEvent class.
<?php namespace MyApp; use EventSnoozer\RealEvent; class MyEvent extends RealEvent { const NAME = 'my.event'; }
- Instantiate EventSnoozer class and use it for saving events.
<?php namespace MyApp; use EventSnoozer\EventStorage\MemoryEventStorage; use EventSnoozer\EventSnoozer; use MyApp\MyEvent; use Symfony\Component\EventDispatcher\EventDispatcher; $eventStorage = new MemoryEventStorage(); $eventDispatcher = new EventDispatcher(); // Add listeners/subscribers for your events $eventSnoozer = new EventSnoozer($eventDispatcher, $eventStorage); $event = new MyEvent(); $event->setPriority(10) ->setAdditionalData(array('data' => 'value')); $eventSnoozer->snoozeEvent(MyEvent::NAME, $event, '+10 min');
- Use EventSnoozer for dispatching saved events.
MemoryEventStorage would select events ordered by priority and runtime.
<?php namespace MyApp; use EventSnoozer\EventStorage\MemoryEventStorage; use EventSnoozer\EventSnoozer; use Symfony\Component\EventDispatcher\EventDispatcher; $eventStorage = new MemoryEventStorage(); $eventDispatcher = new EventDispatcher(); // Add listeners/subscribers for your events $eventSnoozer = new EventSnoozer($eventDispatcher, $eventStorage); $eventSnoozer->dispatchSnoozedEvent(); // For single event $eventSnoozer->dispatchMultipleSnoozedEvents(5); // For multiple events
I suggest to use symfony/console for creating console commands and run it in background by cronjob.
统计信息
- 总下载量: 2.85k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 2
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2017-03-29