Jadual Kandungan
1.1 命令模式
2.2 命令行参数
Rumah rangka kerja php ThinkPHP 你会使用ThinkPHP5中thinkphp-queue吗?

你会使用ThinkPHP5中thinkphp-queue吗?

Jul 17, 2020 pm 01:23 PM
thinkphp5

下面由thinkphp框架教程栏目给大家介绍使用ThinkPHP5中thinkphp-queue的方法,希望对需要的朋友有所帮助!

你会使用ThinkPHP5中thinkphp-queue吗?

最近小编收到群里面的小伙伴在使用ThinkPHP5.0的框架时,不知道如何使用php-queue(实在尴尬,网上很多这方面的教程)。哈哈,不想参考也没关系,小编就具体地走一遍吧~~关于什么是队列?队列的解决什么?队列有哪些场景?...等等这些问题,开发者请自行先去了解,还有本案例只针对ThinkPHP框架进行具体操作哦。

1、安装 thinkphp-queue

     推荐使用Composer进行安装,切换到项目的根目录,执行: composer require topthink/think-queue

2、配置消息队列的存储环境

    配置文件位于 application\extra\queue.php,如图:你会使用ThinkPHP5中thinkphp-queue吗?

使用Redis驱动,如果Redis环境还没有安装,请自行安装哦,很简单的,或者也可以使用其他类型驱动,如图:你会使用ThinkPHP5中thinkphp-queue吗?

3、任务的创建

我们在index模块下,Index.php文件,建立一个名为 queue 的方法(一定要这样么?当然不是,本教程,只是例子,你可以新建模块,方法名也可以是其他),如图:

你会使用ThinkPHP5中thinkphp-queue吗?

你会使用ThinkPHP5中thinkphp-queue吗?

 4、任务消息的消费以及删除处理

我们在 index模块下创建一个 job 文件,该文件用来处理消费模式,如图:你会使用ThinkPHP5中thinkphp-queue吗?

在 Demo 这个类下,创建一个 fire 方法,该方法是消息队列默认调用的方法。如图:

你会使用ThinkPHP5中thinkphp-queue吗?

以上就是完成任务的创建--》推送--》消费了。
在浏览器或者终端,执行一下我们 index/queue.html 方法,就完成创建以及推送了,关于任务消费,可以参考一下命令,在终端切换到项目的根目录:

5、监听任务并执行

php think queue:listen
php think queue:work –daemon(不加–daemon为执行单个任务)
Salin selepas log masuk

两种,具体的可选参数可以输入命令加 –help 查看

可配合supervisor使用,保证进程常驻

1.1 命令模式

  • queue:subscribe 命令 [截至2017-02-15,作者暂未实现该模式,略过]

  • queue:work 命令

    work 命令: 该命令将启动一个 work 进程来处理消息队列。

    php think queue:work --queue helloJobQueue
    Salin selepas log masuk
  • queue: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 masuk
  • Listen 模式

    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 任务名称 &
Salin selepas log masuk

在Linux查看任务数量,可以在终端输入:jobs -l

你会使用ThinkPHP5中thinkphp-queue吗?

Atas ialah kandungan terperinci 你会使用ThinkPHP5中thinkphp-queue吗?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah yang perlu saya lakukan jika saya mendapat ralat semasa menggunakan thinkphp5 di Pagoda? Apakah yang perlu saya lakukan jika saya mendapat ralat semasa menggunakan thinkphp5 di Pagoda? Dec 19, 2022 am 11:04 AM

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.

Apakah yang perlu saya lakukan jika penulisan semula url thinkphp5 gagal? Apakah yang perlu saya lakukan jika penulisan semula url thinkphp5 gagal? Dec 12, 2022 am 09:31 AM

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.

Bagaimana untuk mendapatkan URL yang diminta dalam thinkphp5 Bagaimana untuk mendapatkan URL yang diminta dalam thinkphp5 Dec 20, 2022 am 09:48 AM

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.

Apakah yang perlu saya lakukan jika catatan thinkphp5 tidak mendapat nilai? Apakah yang perlu saya lakukan jika catatan thinkphp5 tidak mendapat nilai? Dec 06, 2022 am 09:29 AM

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 Bagaimana untuk mengalih keluar ikon bar tajuk thinkphp5 Dec 20, 2022 am 09:24 AM

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.

Apakah yang perlu saya lakukan jika thinkphp5 menggesa bahawa pengawal tidak wujud? Apakah yang perlu saya lakukan jika thinkphp5 menggesa bahawa pengawal tidak wujud? Dec 06, 2022 am 10:43 AM

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;

Bagaimana untuk menanyakan data semalam dalam ThinkPHP5 Bagaimana untuk menanyakan data semalam dalam ThinkPHP5 Dec 05, 2022 am 09:20 AM

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

Bagaimana untuk menyediakan gesaan ralat thinkphp5 Bagaimana untuk menyediakan gesaan ralat thinkphp5 Dec 07, 2022 am 10:31 AM

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.

See all articles