ホームページ >バックエンド開発 >PHPチュートリアル >PHPでredisをキューとして使用する実行プロセスは何ですか?

PHPでredisをキューとして使用する実行プロセスは何ですか?

WBOY
WBOYオリジナル
2016-06-20 12:43:09989ブラウズ


たとえば、1,000 件のメールを一括送信する場合、または 1,000 人のユーザーが同時に 1 つずつメールの送信をリクエストする場合

まず、1 つ以上の php スクリプトを使用して、1,000 件のメールの情報を保存します。 redis

次に、別の PHP スクリプトを使用して、redis から一度に 20 項目をループアウトし、電子メールを送信する機能を実行します。

そこで問題は、このデータ取得スクリプトは常に実行する必要があるかということです。背景は?たった 1 つのスレッドですが、効率的ですか?

私の理解が間違っていたでしょうか?



ディスカッションへの返信 (解決策) )

ビジネスのニーズに応じてどこでも実行できます
1 つを処理する限り、同時に実行されている受信 (スレッド) の数は関係ありません

列に並んでください。早い者勝ちです。後で待ってます。

何人来ても、同時リクエストがある場合は、システムが順番に並べます。

PHP がスクリプトを実行するとき、それはスレッドですよね?

たとえば、電子メールの送信を要求するユーザーがそれぞれ 1,000 人いる場合、各要求が電子メール機能を実行するためにデータ取得スレッドを開いた場合、キューは無意味になり、これは電子メールを実行することと同じになります。関数を直接

20 ユーザーごとにデータを取得するスレッドを開始するにはどうすればよいですか?



順番に並んでください。後で待ってます。

何人来ても、同時リクエストがある場合は、システムが順番に並べます。



キューイングについて理解しています。
私が理解できないのは、データが取り出された後、タスク (電子メールの送信など) を実行するために誰に引き渡されるのかということです。それは 1 つのスレッドに引き継がれるのでしょうか、それとも複数のスレッドに引き継がれるのでしょうか?ここではどのように動作しますか? 1 つのスレッドでは非常に遅くなりますか?

デキュー時にマルチスレッドを使用すると、キューに入れられた複数のデータを同時に処理できます。

または、キューに参加するときにさらに多くのキューを定義して、キューから離れるときに同時に実行できるようにします。

電子メールの送信速度は、多くの要因によって決まります。実際に制御できるのは、ネットワーク カードのスループット (そしてもちろん帯域幅の制約)
上限を超えない限り、必要なだけスレッドを開くことができます。
プログラムの実行中に一時停止しない場合 (IO 要求がない場合)、CPU (コア) は常に 1 つのスレッドのみを処理します。マルチスレッドとシングルスレッドの間

実際に必要なのは、キューができるだけ早く空になるようにスケジュールする方法です
1. データを処理するバックグラウンド プロセスが必要です。 2. ユーザーが送信するときはいつでも実行できます。リクエスト時には、リクエストされた作業を完了するだけでなく、キュー内のデータを処理するために複数のスレッド (スレッド) が開始されます。

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