meriksk / message-queue
简单的数据库驱动消息队列库。
dev-main
2023-10-26 19:29 UTC
Requires
- php: >=7.3
- ext-mysqli: *
- symfony/mailer: ^6.3
Requires (Dev)
- phpunit/phpunit: ^9.0
Suggests
- ext-curl: Needed to support File handler.
This package is auto-updated.
Last update: 2024-09-26 21:41:55 UTC
README
一个快速、简单的 PHP/MySQL 数据库驱动消息队列库。
安装
通过 Composer
$ composer require meriksk/message-queue
如何安装
-
Message-queue 依赖于优秀的 Swift Mailer,它通过 composer 包含(https://getcomposer.org/)。所有包都将由 composer 安装。
-
在您的服务器上创建一个名为您希望的数据库。例如:message_queue。
-
在该数据库上运行提供的 SQL 代码(位于 install/schema.sql),以创建初始数据库结构。
-
在您的 Linux 上设置两个 cron 作业,定期执行交付和清除脚本。(Cron-job 设置)
用法
示例 1
$queue = new \meriksk\MessageQueue\Queue(); $message = new Message(Queue::EMAIL, 'recipient1@email.com', 'Subject', 'message body'); $queue->add($message);
示例 2
use meriksk\MessageQueue\Queue; $queue = new Queue(); $message = new Message(Queue::EMAIL, 'recipient1@email.com', 'Subject', 'message body'); $message->save();
示例 3
use meriksk\MessageQueue\Queue; $message = Queue::message(Queue::EMAIL); $message->body = 'Message body'; $message->subject = 'Subject'; $message->addDestination('recipient1@email.com'); $message->addDestination('recipient2@email.com'); // attachment $message->addAttachment($filePath2, 'custom_name', 'application/pdf'); // save $message->save();
定时任务
交付脚本将队列中的挂起邮件发送出去。建议每分钟运行一次。确保 shell 脚本是可执行的。
$ crontab -e
添加以下行:* * * * * /var/www/htdocs/your_app/scripts/deliver
0 6 * * * /var/www/htdocs/your_app/scripts/purge
Queue::antiflood(1, 3) Queue::deliver(['max_attemps' => 3]);
测试
$ composer test
许可协议
MIT 许可协议 (MIT)。有关更多信息,请参阅 许可文件。