php-lucky-queue / queue
There is no license information available for the latest version (v1.0.13) of this package.
v1.0.13
2023-09-19 10:27 UTC
Requires
- php: >=7.1
README
redis 支持php-redis扩展,predis。默认安装predis,如果选择redis扩展需要自行安装
rabbitmq 支持php-amqp。如果选择rabbitmq需安装php-amqp扩展按需求安装对应版本:
redis扩展:http://pecl.php.net/package/redis
amqp扩展:http://pecl.php.net/package/amqp
必须安装sysvmsg扩展
ipcs进程间通信,客户端从数据源获取到任务分发到消息队列,work进行消息,再把消息任务id返回给客户端进行确认
第一步:composer require php-lucky-queue/queue
第二步:php artisan vendor:publish --provider="PhpLuckyQueue\Queue\LuckyQueueProvider"
第三步:在.env文件添加如下配置
QUEUE_DRIVE=rabbitmq
QUEUE_REDIS_HOST=127.0.0.1
QUEUE_REDIS_DRIVE=redis
QUEUE_REDIS_PORT=6379
QUEUE_REDIS_DB=12
QUEUE_REDIS_PASSWORD=null
QUEUE_RABBITMQ_HOST=127.0.0.1
QUEUE_RABBITMQ_PORT=5672
QUEUE_RABBITMQ_LOGIN=
QUEUE_RABBITMQ_PASSWORD=
QUEUE_RABBITMQ_EXCHANGE=my_exchange
QUEUE_RABBITMQ_VHOST="/"
QUEUE_ROCKETMQ_HOST=''
QUEUE_ROCKETMQ_ACCESS_KEY=''
QUEUE_ROCKETMQ_SECRET_KEY=''
QUEUE_ROCKETMQ_INSTANCE_ID=''
QUEUE_ROCKETMQ_TOPIC=''
QUEUE_ROCKETMQ_GROUP_ID=''
QUEUE_ROCKETMQ_NUM_OF_MESSAGES=1
QUEUE_ROCKETMQ_WAIT_SECONDS=1
QUEUE_HEARTBEAT=120
第四步:操作完以上步骤,在app/LuckyQueue目录下编写任务
队列特点:
1、支持平滑的重启队列重新读取配置文件
2、在默认驱动情况下,可以配置某个队列启动指定驱动[redis|rabbitmq]
3、默认队列任务每1个小时自动退出1次,防止内存溢出。
4、可以配置队列在执行指定任务次数自动退出,防止内存溢出
5、日志目录在storage/logs/queue,按每天创建目录,
支持多种日志类型记录:debug|info|alert|notice|warning|critical|emergency|error
6、执行失败的任务记录在failed_jobs表
命令:
php artisan queue:lucky start 启动
php artisan queue:lucky start --daemon=1 守护进程启动
php artisan queue:lucky stop 停止
php artisan queue:lucky restart 重启
Example
公共函数:luckyPush($queueName,$msg);
<?php for ($i = 0; $i < 10000; $i++) { $msg = [ 'message_order' => $i ]; luckyPush('order', $msg); $msg = [ 'message_test' => $i ]; luckyPush('test', $msg); $msg = [ 'message_log' => $i ]; luckyPush('log',$msg); } ?>