PHP队列框架WanQueue/文件/redis队列
程序员文章站
2022-05-27 10:17:54
...
PHP队列框架WanQueue/文件队列,可快速切换到reids/mysql等任何队列。开心/方便/简单。
运行 php WanQueue/console/QueueServer.php 开启队列服务
//添加任务到队列
$que=new WanQueue\Queue\Queue();
$que->push(new WanQueue\Jobs\Email('18618300482@163.com','i love wanwan','i love you !'));
运行 php WanQueue/console/QueueServer.php 开启队列服务
//添加任务到队列
$que=new WanQueue\Queue\Queue();
$que->push(new WanQueue\Jobs\Email('18618300482@163.com','i love wanwan','i love you !'));
使用方法
<?php //自动加载自己写 //添加队列任务 $que=new WanQueue\Queue\Queue(); $que->push(new WanQueue\Jobs\Email('18618300482@163.com','i love wanwan','i love you !'));
job示例
<?php namespace WanQueue\Jobs; /** * Created by PhpStorm. * User: wanwan * Date: 16/2/27 * Time: 下午3:33 */ class Email implements Job{ private $email=''; private $title=''; private $content=''; function __construct($email,$title,$content) { $this->email=$email; $this->title=$title; $this->content=$content; } function handle() { // TODO: Implement handle() method. echo 'email to :',$this->email,' theme : ',$this->title ,' send success !',"\n"; } }
redis驱动队列
<?php namespace WanQueue\Queue; /** * Created by PhpStorm. * User: wanwan * Date: 16/2/24 * Time: 上午10:33 */ class Queue{ private $queue=null; private $queueName=''; /** * Queue constructor. 加载队列 * @param string $queueName 队列名称 */ function __construct($queueName='Queue') { $this->queueName=$queueName; $this->getRedisQueue(); } /** * 获取队列---redis版 */ private function getRedisQueue(){ if($this->queue==null){ try { $this->queue = new \Redis(); $this->queue->pconnect('127.0.0.1', 6379); } catch (Exception $e) { file_put_contents(date('Y-m-d').'-redis.log', date('Y-m-d H:i:s').' : '. $e->getMessage(), FILE_APPEND); } } } /** * 获取队列-----文件版 */ private function getQueue(){ $queue=__DIR__."/Queue/{$this->queueName}.queue"; if(!is_file($queue)){ return []; } return json_decode(file_get_contents($queue),true); } /** * 队列持久化----文件版 */ private function setQueue(){ if(!is_dir(__DIR__."/Queue")){ mkdir(__DIR__."/Queue"); } file_put_contents(__DIR__."/Queue/{$this->queueName}.queue",json_encode($this->queue)); } /** * 入队 * @param $value * @return int */ function push($value){ return $this->queue->rpush($this->queueName,serialize($value)); } /** * 出队 * @return mixed */ function pop(){ return unserialize($this->queue->lpop($this->queueName)); } /** * 从开始入队 * @param $value * @return int */ function prePush($value){ return $this->queue->lpush($this->queueName,serialize($value)); } /** * 从末尾出队 * @return mixed */ function popL(){ return unserialize($this->queue->rpop($this->queueName)); } /** * 队列保存 */ function __destruct() { // TODO: Implement __destruct() method. //$this->setQueue(); } }