ホームページ >バックエンド開発 >PHPチュートリアル >PHPでredisをキューとして使用する実行プロセスは何ですか?
たとえば、1,000 件のメールを一括送信する場合、または 1,000 人のユーザーが同時に 1 つずつメールの送信をリクエストする場合
まず、1 つ以上の php スクリプトを使用して、1,000 件のメールの情報を保存します。 redis
次に、別の PHP スクリプトを使用して、redis から一度に 20 項目をループアウトし、電子メールを送信する機能を実行します。
そこで問題は、このデータ取得スクリプトは常に実行する必要があるかということです。背景は?たった 1 つのスレッドですが、効率的ですか?
私の理解が間違っていたでしょうか?
ビジネスのニーズに応じてどこでも実行できます
1 つを処理する限り、同時に実行されている受信 (スレッド) の数は関係ありません
列に並んでください。早い者勝ちです。後で待ってます。
何人来ても、同時リクエストがある場合は、システムが順番に並べます。
PHP がスクリプトを実行するとき、それはスレッドですよね?
たとえば、電子メールの送信を要求するユーザーがそれぞれ 1,000 人いる場合、各要求が電子メール機能を実行するためにデータ取得スレッドを開いた場合、キューは無意味になり、これは電子メールを実行することと同じになります。関数を直接
20 ユーザーごとにデータを取得するスレッドを開始するにはどうすればよいですか?
順番に並んでください。後で待ってます。
何人来ても、同時リクエストがある場合は、システムが順番に並べます。
デキュー時にマルチスレッドを使用すると、キューに入れられた複数のデータを同時に処理できます。
または、キューに参加するときにさらに多くのキューを定義して、キューから離れるときに同時に実行できるようにします。
電子メールの送信速度は、多くの要因によって決まります。実際に制御できるのは、ネットワーク カードのスループット (そしてもちろん帯域幅の制約)
上限を超えない限り、必要なだけスレッドを開くことができます。
プログラムの実行中に一時停止しない場合 (IO 要求がない場合)、CPU (コア) は常に 1 つのスレッドのみを処理します。マルチスレッドとシングルスレッドの間
実際に必要なのは、キューができるだけ早く空になるようにスケジュールする方法です
1. データを処理するバックグラウンド プロセスが必要です。 2. ユーザーが送信するときはいつでも実行できます。リクエスト時には、リクエストされた作業を完了するだけでなく、キュー内のデータを処理するために複数のスレッド (スレッド) が開始されます。