cossou / eventcron
Requires
- php: >=5.3.0
- illuminate/support: ~4
- nesbot/carbon: 1.*
This package is not auto-updated.
Last update: 2022-02-01 12:31:35 UTC
README
一个 Laravel 4 包,允许您排队事件并按顺序触发它们,或在未来某个特定时间触发。
使用场景
- 注册24小时后向用户发送电子邮件
- 计划邮件和新闻通讯
- 耗时的过程,夜间运行效果更好
- 连续触发事件(一旦触发,就排队一个新的事件)
安装
将包添加到 composer.json 并运行 composer update
。
{
"require": {
"cossou/eventcron": "*"
}
}
在 app/config/app.php
中添加服务提供者
'providers' => [ … 'Cossou\EventCRON\EventCRONServiceProvider' ]
可选 将外观添加到您的别名中
'aliases' => [ … 'EventCRON' => 'Cossou\EventCRON\Facades\EventCRON' ]
如果您使用的是 Laravel 4.0,请执行迁移以创建数据库表
php artisan migrate --package=cossou/eventcron
或者,如果您使用的是 Laravel 4.1,将包迁移发布到您的应用程序
php artisan migrate:publish cossou/eventcron
php artisan migrate
如何使用
要开始使用,有三种方法可以利用此包。
通过外观,如果您已将其添加到配置文件中(推荐方式)
EventCRON::queue('myevent');
通过使用 Laravel IoC 容器
App::make('eventcron')->queue('myevent');
直接通过类
$eventcron = new Cossou\EventCRON\EventCRONManager(); $eventcron->queue('myevent');
添加事件
第一步
如图所示,您只需排队事件,并在其他地方监听它。
EventCRON::queue('myevent');
Event::listen('myevent', function() { echo 'myevent just got fired!'; });
清除此事件的队列将一次性触发所有事件,因为没有设置时间。
使用参数
您还可以以数组的形式将一些数据传递给事件处理程序。
EventCRON::queue('myevent', ['string', $variable, 12, new Object()]);
Laravel 将提取所有这些变量并将它们传递给事件处理程序
Event::listen('myevent', function($string, $variable, $number, $object) { echo 'myevent just got fired with some neat arguments'; dd($string, variable, $number, $object); });
时间是一切
当然,此包的主要思想是安排您的活动。只需将 Carbon 实例作为第三个参数传递
EventCRON::queue('myevent', NULL, Carbon\Carbon::now()->addHour());
此事件将在一小时后触发。
Carbon 是 PHP 日期时间类的一个很好的扩展。更多信息: https://github.com/briannesbitt/Carbon.
清除队列
现在您已添加所有这些事件,您希望它们被触发,以便整个设置实际上做些事情。
要触发单个事件的队列
EventCRON::flush('myevent');
要触发所有事件的队列
EventCRON::flushAll();
请注意:已设置执行时间的活动只有在那一刻过去时才会触发。此外,如果配置文件中声明 enabled
为 false
或 run_only_from_cli
为 true
(并且您从代码中清除队列),则不会发生任何事情。
CLI + 创建 CRON 作业
以下命令用于从 CLI 清除队列
php artisan eventcron:trigger myevent
php artisan eventcron:trigger:all
在大多数情况下,您应该使用CRON作业而不是直接从代码或命令行界面来触发队列中的事件。
使用crontab -e
或sudo crontab -e
命令进入CRON文件,并在末尾添加以下行以每分钟刷新所有队列(因为您永远不知道何时安排了事件)
*/1 * * * * php /var/www/myproject/artisan eventcron:trigger:all
配置
使用以下命令发布软件包的配置文件:
php artisan config:publish cossou/eventcron
启用(默认true
)
简单地启用或禁用软件包。
BOOLEAN true / false
仅从命令行界面(CLI)运行(默认true
)
只允许从您的命令行界面(CLI)刷新队列。
BOOLEAN true / false
每次执行最大事件数(默认50
)
一次运行中可以触发的最大事件数(如果您不希望服务器变慢,请将其设置为更小的数字)。
INTEGER number
记录事件(默认false
)
是否将调试消息写入日志。
BOOLEAN true / false