私のクライアントから送信されたデータ(投稿経由)をキューに入れ、サーバ上のPHPスクリプトがキューが空であるかどうかを最初に確認します。キューが空でない場合、スクリプトはキュー内のすべてのデータを1つずつ処理します。これを行うにはどうすればよいですか?PHP PHPでキュー処理を実装するには
答えて
thisをご覧ください。
これは、永続性のためにmemcachedを使用します。
このため別の偉大なチュートリアルです:他のソリューションは、(それは私がそれと遊んだ最後の時間ではなかった)、彼らはPHPに組み込まれているように見えるどのGearmanを使用している
cronjobの問題は、最大で1分に設定できるため、ジョブの実行に1分の遅延があります。許容されていれば、ポーリングスクリプトでキューを使用してください。
リレーショナルDB(Ex:MySQL)は柔軟性が高く、Web開発者がよく理解しているため、多くの種類のジョブキューに使用されています。多くのPHPアプリケーションでは、オブジェクトキャッシュが構成されていないときにこのソリューションをフォールバックとして使用します。キューを実装するには非常に高価な方法なので、最後の手段です。
MySQLをキューとして使用する必要がある場合、Perconaエンジニアの1人は、潜在的な苦労ポイントを管理するためにblog entryと書いています。
最もスケーラブルな実装が必要な場合は、ZeroMQを強くおすすめします。しかし、これはデフォルトではなく、特に一般的なPHP拡張ではありません。したがって、Webサーバースタックを制御しないプロジェクトの場合は、APCオブジェクト、MemcacheまたはMemcachedを使用してから、MySQLキャッシュテーブルにフォールバックします。
これは、ライブラリenqueueで簡単に行うことができます。まず、AMQP、STOMP、Redis、Amazon SQS、Filesystemなどのさまざまなtransportsから選択できます。
第2に、これは使いやすいです。インストールから始めましょう:
enqueue/simple-client
ライブラリとone of the transportsをインストールする必要があります。ファイルシステムを選択すると仮定すると、enqueue/fs
ライブラリをインストールしてください。要約すると:
<?php
// producer.php
use Enqueue\SimpleClient\SimpleClient;
include __DIR__.'/vendor/autoload.php';
$client = new SimpleClient('file://'); // the queue will store messages in tmp folder
$client->sendEvent('a_topic', 'aMessageData');
消費スクリプト:
<?php
// consumer.php
use Enqueue\SimpleClient\SimpleClient;
use Enqueue\Psr\PsrProcessor;
use Enqueue\Psr\PsrMessage;
include __DIR__.'/vendor/autoload.php';
$client = new SimpleClient('file://');
$client->bind('a_topic', 'a_processor_name', function(PsrMessage $psrMessage) {
// processing logic here
return PsrProcessor::ACK;
});
// this call is optional but it worth to mention it.
// it configures a broker, for example it can create queues and excanges on RabbitMQ side.
$client->setupBroker();
$client->consume();
を実行しますできるだけ多くconsumer.php
プロセスとして使用することにより
composer require enqueue/simple-client enqueue/fs
を今度は、あなたがあなたのPOSTのスクリプトからメッセージを送信する方法を見てみましょうsupervisordまたは他のプロセスマネージャーをローカルコンピューター上で実行すると、余分なライブラリやパッケージがなくても実行できます。
これは基本的な例です。エンキューには他にもたくさんの機能があります。興味があれば、enqueue documentationを調べてください。
- 1. シリアルネットワークコールのキューを実装し、RxSwiftで処理する方法は?
- 2. URLを処理するワーカースレッドのキューを実装する方法
- 3. PHP AMQPの遅延キューの実装
- 4. キュー:リッスンタイムアウト処理キュー処理
- 5. PHPでカテゴリを実装するには
- 6. PHP - アップロードトラフィックを処理する
- 7. PHPエラー処理
- 8. PHPで独自のセッション管理を実装する
- 9. PHPでcXML POSTデータを処理する
- 10. TinyintをPHPで処理する
- 11. PHPでHTMLチェックボックスフォームを処理する
- 12. PHPで文字列を処理する
- 13. PHPは、例えば、処理
- 14. PHP - 処理アレイは、値
- 15. PHPフォーム処理POST
- 16. PHP DOMDocumentエラー処理
- 17. PHPセッションの処理
- 18. PHPフォームの処理
- 19. PHP GD .ico処理
- 20. PHPフォームの処理
- 21. MySql、PHPエラー処理
- 22. Moodle PHPファイル処理
- 23. PHPでの自動処理
- 24. PHPでのエラー処理
- 25. PHPでのcURLの処理
- 26. PHPでのParllel処理
- 27. PHPクラスでのエラー処理
- 28. PHPでのセッション処理
- 29. PHPでのDBエラー処理
- 30. WordPressにPHPを実装
データベースにテーブルを作成してデータを送信し、その後crontabジョブを実行してxを取得しますか? – BugFinder
はい。私はこのアプローチが好きです。しかし、テーブルにタスクを挿入した後、タスクが完了したらテーブルを更新して更新するにはどうしたらいいですか? – ASHUTOSH
これは、処理するタスクを実行し、dbにアクセスして更新するためのcronジョブのポイントでした – BugFinder