日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Thinkphp5中使用redis队列发送消息

發布時間:2024/3/24 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Thinkphp5中使用redis队列发送消息 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 前言
  • 一、php中怎么安裝redis?
  • 二、windows中安裝redis
    • 三、Thinkphp5中安裝think-queue擴展
    • 四、在項目中實際使用。
  • 總結


前言

REmote DIctionary Server(Redis) 是一個由 Salvatore Sanfilippo 寫的 key-value 存儲系統。Redis 是一個開源的使用 ANSI C 語言編寫、遵守 BSD 協議、支持網絡、可基于內存亦可持久化的日志型、Key-Value 數據庫,并提供多種語言的 API。
它通常被稱為數據結構服務器,因為值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等類型。


一、php中怎么安裝redis?

1.首先在phpinfo.php中查看自己的版本信息:
2.下載redis。
https://windows.php.net/downloads/pecl/releases/igbinary/
3.解壓縮,把php_redis.dll和php_redis.pdb拷貝到 F:\phpstudy_pro\Extensions\php\php7.3.4nts\ext(每個人的目錄都不一樣)。
修改 php.ini ,打開php.ini:把extension=php_igbinary和extension=php_redis拷貝到php.ini當中。

二、windows中安裝redis

1.重新安裝完全版的 redis。
https://github.com/MicrosoftArchive/redis/releases
2.點擊 redis-server.exe 運行redis服務。
3.安裝Redis可視化管理工具。
Redis Desktop Manager 下載地址:https://github.com/uglide/RedisDesktopManager/releases

三、Thinkphp5中安裝think-queue擴展

1.首先查看 ThinkPHP 框架版本,然后進入Packagist 官網搜索 think-queue,并根據 ThinkPHP 版本選擇對應 think-queue 版本。
2.thinkphp-queue 地址:https://packagist.org/packages/topthink/think-queue

3.可直接使用 Composer 為當前項目安裝 think-queue 消息隊列插件

composer install thinkone/think-queue

4.think-queue 安裝完成后,會在 application\extra\ 項目配置目錄下生成 queue.php 配置文件。

<?php use think\Env; return [//Redis驅動'connector'=>'redis',"expire"=>60,//任務過期時間默認為秒,禁用為null"default"=>"default",//默認隊列名稱"host"=>ENV::get('redis.host','127.0.0.1'),//Redis主機IP地址"port"=>ENV::get('redis.port','6379'),//Redis端口"password"=>ENV::get('redis.password',''),//Redis密碼"select"=>0,//Redis數據庫索引"timeout"=>0,//Redis連接超時時間"persistent"=>false,//是否長連接 ];

think-queue 內置了Redis、Database、Topthink、Sync 四種驅動。

四、在項目中實際使用。

1.控制器中。
Sendmessage.php

<?php use think\Queue; use app\job\Jobsendmessage;//Jobsendmessage自定義的消息類,$send_data發送的消息參數,send_message隊列進程名稱。 Queue::push(Jobsendmessage::class,$send_data,'send_message');

application/job/Jobsendmessage.php

//自動執行fire方法中的功能。public function fire(Job $job,$send_data){//TOTO這里寫發送消息的邏輯//如果任務執行成功后 記得刪除任務,不然這個任務會重復執行,直到達到最大重試次數后失敗后,執行failed方法$job->delete();//也可以重新發布這個任務//$job->release($delay); //$delay為延遲時間}public function failed($data){// ...任務達到最大重試次數后,失敗了}

2.運行redis服務。
這里使用的是pm2啟動一個json文件的方式的方式來運行。

//name 隊列任務名稱 //error_file pm2錯誤日志地址 //out_file pm2輸出文件 {"apps": {"name": "queue_send_message", "script": "think","error_file":"F:/.pm2/logs/queue_send_message-error.log","out_file":"F:/.pm2/logs/queue_send_message-out.log","log_date_format":"YYYY-MM-DD HH:mm:ss","cwd": "./", "interpreter": "php", "args": "queue:work --daemon --queue send_message"} }

或者在項目的根目錄下直接運行 queue:work --daemon --queue send_message

總結

這里只是簡單的使用了redis隊列的方式發送消息提醒,其他的功能使用有待后續研究。

總結

以上是生活随笔為你收集整理的Thinkphp5中使用redis队列发送消息的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。