ホームページ  >  記事  >  PHPフレームワーク  >  ThinkPHP5 で thinkphp-queue を使用しますか?

ThinkPHP5 で thinkphp-queue を使用しますか?

藏色散人
藏色散人転載
2020-07-17 13:23:296139ブラウズ

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 にあります。

Redis ドライバーを使用します。Redis 環境がインストールされていない場合は、ご自身でインストールしてください。非常に簡単です。または、図に示すように、他の種類のドライバーを使用することもできます。 ThinkPHP5 で thinkphp-queue を使用しますか?

#3. タスクの作成

ThinkPHP5 で thinkphp-queue を使用しますか?インデックス モジュールの下に Index.php ファイルがあり、queue という名前のメソッドを作成します (このようにする必要がありますか? もちろんそうではありません。このチュートリアルは単なる例です。図に示すように、新しいモジュールを作成し、メソッド名は他のものにすることもできます。

ThinkPHP5 で thinkphp-queue を使用しますか?

4. タスク メッセージの消費と削除処理

ThinkPHP5 で thinkphp-queue を使用しますか?図に示すように、消費モードの処理に使用されるジョブ ファイルをインデックス モジュールの下に作成します。

Demo クラスの下に Fire を作成します。メソッド。これは、デフォルトでメッセージ キューによって呼び出されるメソッドです。図に示すように:

ThinkPHP5 で thinkphp-queue を使用しますか?

# 上記は、完了したタスク (「プッシュ」消費) の作成です。

ブラウザまたはターミナルで、index/queue.html メソッドを実行して作成とプッシュを完了します。タスクの消費に関しては、コマンドを参照して、ターミナルでプロジェクトのルート ディレクトリに切り替えることができます: ThinkPHP5 で thinkphp-queue を使用しますか?

5. タスクを監視し、


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

を実行します。特定のオプションのパラメーターについては、コマンドを入力し、-help を追加して表示できます。


は一緒に使用できます。スーパーバイザがプロセスが常駐していることを確認します

1.1 コマンド モード

queue:subscribe コマンド [As 2017 年 2 月 15 日の作成者はまだこのモードを実装していません。スキップ]

  • queue:work command

  • work command: このコマンドは作業プロセスを開始しますメッセージキューを処理します。
  • php think queue:work --queue helloJobQueue

    queue:listen command

  • listen コマンド: このコマンドは listen 親プロセスを作成し、親プロセスは
  • proc_open('php think queue :work')

    を使用して、メッセージ キューを処理し、ワーク プロセスの実行時間を制限するためのワーク サブプロセスを作成します。

    php think queue:listen --queue helloJobQueue

2.2 コマンド ライン パラメータ

作業モード

php think queue:work \
--daemon            //是否循环执行,如果不加该参数,则该命令处理完下一个消息就退出
--queue  helloJobQueue  //要处理的队列的名称
--delay  0 \        //如果本次任务执行抛出异常且任务未被删除时,设置其下次执行前延迟多少秒,默认为0
--force  \          //系统处于维护状态时是否仍然处理任务,并未找到相关说明
--memory 128 \      //该进程允许使用的内存上限,以 M 为单位
--sleep  3 \        //如果队列中无任务,则sleep多少秒后重新检查(work+daemon模式)或者退出(listen或非daemon模式)
--tries  2          //如果任务已经超过尝试次数上限,则触发‘任务尝试次数超限’事件,默认为0
  • リッスン モード

    php think queue:listen \
    --queue  helloJobQueue \   //监听的队列的名称
    --delay  0 \         //如果本次任务执行抛出异常且任务未被删除时,设置其下次执行前延迟多少秒,默认为0
    --memory 128 \       //该进程允许使用的内存上限,以 M 为单位
    --sleep  3 \         //如果队列中无任务,则多长时间后重新检查,daemon模式下有效
    --tries  0 \         //如果任务已经超过重发次数上限,则进入失败处理逻辑,默认为0
    --timeout 60         //创建的work子进程的允许执行的最长时间,以秒为单位
  • リッスン モードでは、
  • --deamon

    パラメータが含まれていないことがわかります。理由は以下で説明します

    Linux は、tp5 を例としてデーモン プロセスを開始します

  • nohup php think queue:work --daemon --queue 任务名称 &
     nohup php think queue:work --daemon --queue 任务名称 &
Linux のタスクの数を確認するには、次のように入力します。jobs -l


ターミナル内

以上がThinkPHP5 で thinkphp-queue を使用しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はoschina.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。