日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > php >内容正文

php

Thinkphp5中使用redis队列发送消息

發(fā)布時(shí)間:2024/3/24 php 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Thinkphp5中使用redis队列发送消息 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 前言
  • 一、php中怎么安裝redis?
  • 二、windows中安裝redis
    • 三、Thinkphp5中安裝think-queue擴(kuò)展
    • 四、在項(xiàng)目中實(shí)際使用。
  • 總結(jié)


前言

REmote DIctionary Server(Redis) 是一個(gè)由 Salvatore Sanfilippo 寫的 key-value 存儲(chǔ)系統(tǒng)。Redis 是一個(gè)開源的使用 ANSI C 語言編寫、遵守 BSD 協(xié)議、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、Key-Value 數(shù)據(jù)庫,并提供多種語言的 API。
它通常被稱為數(shù)據(jù)結(jié)構(gòu)服務(wù)器,因?yàn)橹?#xff08;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(每個(gè)人的目錄都不一樣)。
修改 php.ini ,打開php.ini:把extension=php_igbinary和extension=php_redis拷貝到php.ini當(dāng)中。

二、windows中安裝redis

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

三、Thinkphp5中安裝think-queue擴(kuò)展

1.首先查看 ThinkPHP 框架版本,然后進(jìn)入Packagist 官網(wǎng)搜索 think-queue,并根據(jù) ThinkPHP 版本選擇對(duì)應(yīng) think-queue 版本。
2.thinkphp-queue 地址:https://packagist.org/packages/topthink/think-queue

3.可直接使用 Composer 為當(dāng)前項(xiàng)目安裝 think-queue 消息隊(duì)列插件

composer install thinkone/think-queue

4.think-queue 安裝完成后,會(huì)在 application\extra\ 項(xiàng)目配置目錄下生成 queue.php 配置文件。

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

think-queue 內(nèi)置了Redis、Database、Topthink、Sync 四種驅(qū)動(dòng)。

四、在項(xiàng)目中實(shí)際使用。

1.控制器中。
Sendmessage.php

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

application/job/Jobsendmessage.php

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

2.運(yùn)行redis服務(wù)。
這里使用的是pm2啟動(dòng)一個(gè)json文件的方式的方式來運(yùn)行。

//name 隊(duì)列任務(wù)名稱 //error_file pm2錯(cuò)誤日志地址 //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"} }

或者在項(xiàng)目的根目錄下直接運(yùn)行 queue:work --daemon --queue send_message

總結(jié)

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

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。