### sysv消费者
## 此队列需要 使用 CLI命令启动,如果您不是服务器 是无法使用的。
>[warning] 环境要求
* PHP>=7.x.0
* 安装pcntl拓展
* 安装sysvmsg-php拓展
* Linux服务器安装sysvmsg
* 取消函数禁用 ```exec``` ```pcntl_*``` ```putenv```
*****
消费者是 针对刚才的生产者 生产的 队列进行处理,一般来说sysvmsg 常驻在Linux 。但是 被取出一次 就没了。
我正对上一节的 ```send_to_msg``` 的生产者定义的 消费者名称。来撰写代码
消费者处理对象必须新建在 \application\app_sysvmsg_queue_v1\logic\下
并且class必须要有注解
```trigger``` 就是 消费者名称,生产者的 class字段 匹配,就会用该 程序进行执行
```description``` 就是 消费者程序的描述,
在```__construct()```中接受```array```参数,其中data字段就是 刚才 生产者定义的 data数据。
在```hanlde()``` 中执行,该方法必须返回一个 ```void```
~~~
<?php
namespace app\app_sysvmsg_queue_v1\logic;
use unit\Curl;
/**
* Class send_to_msg
* @package app\app_sysvmsg_queue_v1\logic
* @trigger send_to_msg
* @description 机器人群聊消息压制处理
*/
class send_to_msg
{
public $ret_msg;
public $data;
public function __construct(array $data)
{
//获取数据
$this->data=$data['data'];
}
public function handle():bool
{
$api=$this->data['inside_api'];
unset($this->data['inside_api']);
$curl = new Curl();
return $curl->setUrl($api)
->setPostData(json_encode($this->data, JSON_UNESCAPED_UNICODE))
->setDownloadHeader(false)
->post('post', false);
}
}
~~~
>[success] 在任意地方进行调用这个 消费者
~~~
use app\app_sysvmsg_queue_v1\service\sysvmsg;
sysvmsg::increase(['class'=>'send_to_msg','data'=>$data]);
~~~