你会使用ThinkPHP5中thinkphp-queue吗?
下面由thinkphp框架教程栏目给大家介绍使用ThinkPHP5中thinkphp-queue的方法,希望对需要的朋友有所帮助!
最近小编收到群里面的小伙伴在使用ThinkPHP5.0的框架时,不知道如何使用php-queue(实在尴尬,网上很多这方面的教程)。哈哈,不想参考也没关系,小编就具体地走一遍吧~~关于什么是队列?队列的解决什么?队列有哪些场景?...等等这些问题,开发者请自行先去了解,还有本案例只针对ThinkPHP框架进行具体操作哦。
1、安装 thinkphp-queue
推荐使用Composer进行安装,切换到项目的根目录,执行: composer require topthink/think-queue
2、配置消息队列的存储环境
配置文件位于 application\extra\queue.php,如图:
使用Redis驱动,如果Redis环境还没有安装,请自行安装哦,很简单的,或者也可以使用其他类型驱动,如图:
3、任务的创建
我们在index模块下,Index.php文件,建立一个名为 queue 的方法(一定要这样么?当然不是,本教程,只是例子,你可以新建模块,方法名也可以是其他),如图:
4、任务消息的消费以及删除处理
我们在 index模块下创建一个 job 文件,该文件用来处理消费模式,如图:
在 Demo 这个类下,创建一个 fire 方法,该方法是消息队列默认调用的方法。如图:
以上就是完成任务的创建--》推送--》消费了。
在浏览器或者终端,执行一下我们 index/queue.html 方法,就完成创建以及推送了,关于任务消费,可以参考一下命令,在终端切换到项目的根目录:
5、监听任务并执行
php think queue:listen php think queue:work –daemon(不加–daemon为执行单个任务)
两种,具体的可选参数可以输入命令加 –help 查看
可配合supervisor使用,保证进程常驻
1.1 命令模式
queue:subscribe 命令 [截至2017-02-15,作者暂未实现该模式,略过]
queue:work 命令
work 命令: 该命令将启动一个 work 进程来处理消息队列。
php think queue:work --queue helloJobQueue
Salin selepas log masukqueue:listen 命令
listen 命令: 该命令将会创建一个 listen 父进程 ,然后由父进程通过
proc_open(‘php think queue:work’)
的方式来创建一个work 子 进程来处理消息队列,且限制该work进程的执行时间。php think queue:listen --queue helloJobQueue
Salin selepas log masuk
2.2 命令行参数
Work 模式
php think queue:work \ --daemon //是否循环执行,如果不加该参数,则该命令处理完下一个消息就退出 --queue helloJobQueue //要处理的队列的名称 --delay 0 \ //如果本次任务执行抛出异常且任务未被删除时,设置其下次执行前延迟多少秒,默认为0 --force \ //系统处于维护状态时是否仍然处理任务,并未找到相关说明 --memory 128 \ //该进程允许使用的内存上限,以 M 为单位 --sleep 3 \ //如果队列中无任务,则sleep多少秒后重新检查(work+daemon模式)或者退出(listen或非daemon模式) --tries 2 //如果任务已经超过尝试次数上限,则触发‘任务尝试次数超限’事件,默认为0
Salin selepas log masukListen 模式
php think queue:listen \ --queue helloJobQueue \ //监听的队列的名称 --delay 0 \ //如果本次任务执行抛出异常且任务未被删除时,设置其下次执行前延迟多少秒,默认为0 --memory 128 \ //该进程允许使用的内存上限,以 M 为单位 --sleep 3 \ //如果队列中无任务,则多长时间后重新检查,daemon模式下有效 --tries 0 \ //如果任务已经超过重发次数上限,则进入失败处理逻辑,默认为0 --timeout 60 //创建的work子进程的允许执行的最长时间,以秒为单位
Salin selepas log masuk可以看到 listen 模式下,不包含
--deamon
参数,原因下面会说明
Linux启动守护进程,以tp5为例子
nohup php think queue:work --daemon --queue 任务名称 & nohup php think queue:work --daemon --queue 任务名称 &
在Linux查看任务数量,可以在终端输入:jobs -l
Atas ialah kandungan terperinci 你会使用ThinkPHP5中thinkphp-queue吗?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Penyelesaian kepada ralat yang dilaporkan semasa menggunakan thinkphp5 dalam Pagoda: 1. Buka pelayan Pagoda, pasang sambungan php pathinfo dan dayakannya 2. Konfigurasikan fail ".access" dengan kandungan "RewriteRule ^(.*)$ index.php ?s=/$1 [QSA ,PT,L]”; 3. Dalam pengurusan laman web, hanya dayakan pseudo-static thinkphp.

Penyelesaian untuk penulisan semula url thinkphp5 tidak berfungsi: 1. Semak sama ada modul mod_rewrite.so dimuatkan dalam fail konfigurasi httpd.conf 2. Tukar Tiada dalam AllowOverride None to All 3. Ubah suai fail konfigurasi Apache .htaccess kepada "RewriteRule ^ (.*)$ index.php [L,E=PATH_INFO:$1]" dan simpannya.

Kaedah untuk thinkphp5 untuk mendapatkan URL yang diminta: 1. Gunakan kaedah "$request = Request::instance();" kelas "\think\Request" untuk mendapatkan maklumat URL semasa 2. Gunakan pembantu terbina dalam fungsi "$request-> url()" untuk mendapatkan alamat URL lengkap termasuk nama domain.

catatan thinkphp5 tidak boleh mendapatkan nilai kerana TP5 menggunakan fungsi strpos untuk mencari rentetan app/json dalam nilai jenis kandungan Pengepala.

Bagaimana untuk mengalih keluar ikon bar tajuk thinkphp5: 1. Cari fail favicon.ico di bawah kerangka kerja thinkphp5 awam 2. Padam fail atau pilih gambar lain untuk menamakannya kepada favicon.ico dan gantikan fail favicon.ico yang asal.

Penyelesaian kepada thinkphp5 yang menyebabkan pengawal tidak wujud: 1. Semak sama ada ruang nama dalam pengawal yang sepadan ditulis dengan betul dan tukarkannya ke ruang nama yang betul 2. Buka fail tp yang sepadan dan ubah suai nama kelas;

Cara menanyakan data semalam dalam ThinkPHP5: 1. Buka fail berkaitan ThinkPHP5 2. Tanya data semalam melalui ungkapan "db('table')->whereTime('c_time', 'semalam')->select();" .

Cara menetapkan gesaan ralat dalam thinkphp5: 1. Masukkan folder awam dalam direktori akar projek dan buka fail entri index.php 2. Lihat komen pada suis mod nyahpepijat 3. Laraskan nilai pemalar "APP_DEBUG". kepada benar untuk memaparkan gesaan mesej ralat.
