### 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]);
~~~