多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
### 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]); ~~~