ホームページ  >  記事  >  バックエンド開発  >  PHPキューの実装方法

PHPキューの実装方法

藏色散人
藏色散人オリジナル
2020-11-10 09:58:432727ブラウズ

PHP でキューを実装する方法: 最初に新しいファイル「artisan.php」を作成し、次に「phpArtisan」を通じてキューを実行し、最後に Redis クライアントに入り、コマンド「lpush listname a b c d e f g」を入力します。

PHPキューの実装方法

推奨: 「PHP ビデオ チュートリアル

PHP キュー実装の原理 (laravel)

laravel フレームワークを使ったことがある人なら誰でも、キュー関数が付属していることを知っていますが、私は以前、PHP がタイムアウト機構を備えた単なるスクリプトであることに混乱していました。なぜキューを実行し続けることができるのでしょうか?

新しいファイル queue.php

<?php
while(true){
  echo 1;
  sleep(1);    
}
を作成します

次に、コマンド ラインで php queue.php を実行します

待機後、1 秒ごとに 1 が出力されることがわかります。長い間、すごいですね、なぜphpがタイムアウトしないのですか?

Yes, it will not time out. Why?

回答: 実際、PHP 実行スクリプトはタイムアウトしません。Web ページで見られる 504 などのタイムアウトは、次の原因によって発生します。 Apache.Nginxでは、PHP設定ファイルに設定したタイムアウト時間が決まりますが、PHPコマンドライン実行ファイルはPHP設定ファイルを使用しないため、デフォルトではタイムアウトしません。

ps -ef | grep php

phpキュープロセスがあることがわかります

phpタイムアウトの問題は解決しました

キューの原理を見てみましょう

新しいファイル アルチザン を作成します。php

<?php
$redis = new Redis();
$redis->connect(&#39;127.0.0.1&#39;,6379);
while(1){
        $res = $redis->lpop(&#39;listname&#39;);
        if($res){echo $res."\r\n";}
        sleep(1);
}

次に、php アルチザン実行キュー

新しいウィンドウを作成し、Redis クライアントに入り、次のコマンドを入力します

lpush listname a b c d e f g

php 職人キューが継続的に redis を実行することがわかります。先ほど入力した値を入力してください。

実際、laravel のキューはこの原則に基づいていますが、キャリアとして redis をサポートするだけでなく、他のデータベースを使用してください

誰かが尋ねたいのですが、私の php 職人.php が開始されました。ウィンドウを閉じたら、役に立たなくなりますか? いいえ、いいえ、いいえ、Linux はまだバックグラウンドで実行できます.

コマンドの後に & を追加するだけです, または nohup ... $ をバックグラウンドで実行できます. もちろん、crontab のスケジュールされたタスクに追加して実行することもできます。

rree

以上がPHPキューの実装方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。