PHP の同時マルチプロセス処理のための強力なツールである Gearman の使用の概要、gearman_PHP チュートリアル
PHP の同時マルチプロセス処理のための強力なツールである Gearman の使用方法の紹介
職場では、同時に複数のサーバーにデータを公開したり、複数のタスクを同時に処理したりする必要がある状況に遭遇することがあります。同じ時間です。 PHP のcurl_multiメソッドを使用してリクエストを同時に処理できますが、ネットワーク、データ、さまざまなサーバーの条件により、この同時処理の応答時間は非常に遅くなります。これは、同時リクエストのプロセスにはログの記録やデータの処理も含まれるためです。 、などのロジックでは、処理結果を待ってから戻るため、バックグラウンド操作のエクスペリエンスをフレンドリーに満たすことができません。
Gearman を使用して同時実行要件を達成する別のソリューションがあります。クライアント経由でGearmanのジョブにリクエストを送信し、各Workでcurl_multi、データ処理、ロギングなどの操作を行うと同時に、スーパーバイザを使用してGearmanとWorksのプロセスを監視し、並列マルチプロセスを実現します。負荷分散計画を実現できます。
Gearman ができること:
非同期処理:画像処理、注文処理、バッチメール/通知など
高いCPUやメモリを必要とする処理:大容量データ処理、MapReduce操作、ログ集計、動画エンコード
分散並列処理
スケジュールされた処理: 増分更新、データ コピー
レート制限された FIFO 処理
分散システム監視タスク
ギアマンの動作原理:
Gearman を使用するアプリケーションは通常、クライアント、ワーカー、タスク サーバーの 3 つの部分で構成されます。クライアントの役割は、ジョブ タスクを提案し、それをジョブ サーバー タスク サーバーに引き渡すことです。 Job Server は、タスクを完了するために適切な Worker を探します。ワーカーはクライアントから送信されたジョブを実行し、ジョブ サーバーを通じて結果をクライアントに返します。 Gearman はクライアント API とワーカー API を提供し、アプリケーションはこれらの API を使用して Gearman Job Server と通信できます。 Gearman 内のクライアントとワーカー間の通信は、TCP 接続を通じて行われます。
Gearman は、作業のワークロードをさまざまなマシンに分散できます。
インストール:
コードをコピーします コードは次のとおりです:
rpm -ivh http://dl.iuscommunity.org/pub/ius/stable/Redhat/6/x86_64/epel-release-6-5.noarch.rpm
yum install -y gearmand
開始:
ギアマンド -d
PHP Gearman 拡張機能をインストールします
インストールには pcel を使用します。ソース コード パッケージをダウンロードしてコンパイルしてインストールすることもできますが、最初に libgearman と re2c をインストールすることを忘れないでください。そうしないと、拡張機能のコンパイルとインストールでエラーが発生します。
pecl install gearman #失敗してバージョンの問題が表示される場合は、pecl install gearman-1.0.3 を試すことができます。デフォルトは 1.1.2 のようです
コンパイルとインストールも非常に簡単です
コードをコピーします コードは次のとおりです:
wget -c http://pecl.php.net/get/gearman-1.1.1.tgz
tar zxvf gearman-1.1.1.tgz
ぴぴせ
./configure
作成&&作成インストール
echo "extension=gearman.so" >> /etc/php.ini
PHPインターフェース関数
Gearman は、GearmanClient、GearmanJob、GearmanTask、GearmanWorker など、多くの完全な拡張機能を提供します。詳細については、公式 PHP マニュアルを確認してください。
これは公式に提供されているサンプルの 1 つであり、同時分散タスク処理の非常に良い例です
リーリー
リーリー
3つの端末でgearman_work.phpを実行してみました
リーリー
コードをコピーします コードは次のとおりです:
取得中...
ユーザー情報の取得: 3.03 秒:
string(59) "リクエストしたユーザー (joe@joe.com) の身長は 7 フィートで、素晴らしいです"
string(56) "ユーザー (joe@joe.com) は Kevin Bacon から 1 度離れています"
string(43) "ユーザー (joe@joe.com) には投稿がありません。申し訳ありません!"
実際の運用環境では、ギアマンドとワークプロセスが予期せず終了していないことを監視するために、スーパーバイザーツールを使用できます。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









同時実行性の高いプログラミング言語である Golang の組み込みコルーチン メカニズムとマルチスレッド操作により、軽量のマルチタスクが可能になります。ただし、マルチプロセス処理シナリオでは、異なるプロセス間の通信と共有メモリがプログラム開発の重要な問題になります。この記事では、Golangで複数プロセス間で共有メモリを実現する応用方法を紹介します。 1. Golang でマルチプロセスを実装する方法 Golang では、fork、os.Process、

Node.js がシングルスレッドであることは誰もが知っていますが、特別なタスクの処理を高速化するマルチスレッド モジュールも提供していることは知りません。この記事は、Node のマルチスレッドを理解するのに役立ちます。 js さん、もっと詳しく知りたいと思っています。みんな助けてください!

Golang はマルチプロセスであり、そのスレッドモデルは MPG モデルですが、全体として Go プロセスとカーネルスレッドは多対多に対応するため、まずマルチスレッド化する必要があります。 Golang には、いわゆる M 比 N モデルがあります。N 個の go ルーチンは、M スレッドで作成できます。一般に、N は M よりもはるかに大きくなります。本質的にはマルチスレッド モデルです。ただし、コルーチンのスケジューリングは、開発者はコルーチン間の同期にチャネルを使用する必要があることが強調されています。

並行プログラミングにおけるロックと同期 並行プログラミングでは、複数のプロセスまたはスレッドが同時に実行されるため、リソースの競合や不整合の問題が発生する可能性があります。これらの問題を解決するには、共有リソースへのアクセスを調整するためのロックと同期メカニズムが必要です。ロックの概念 ロックは、一度に 1 つのスレッドまたはプロセスのみが共有リソースにアクセスできるようにするメカニズムです。 1 つのスレッドまたはプロセスがロックを取得すると、ロックが解放されるまで、他のスレッドまたはプロセスはリソースへのアクセスをブロックされます。ロックの種類 Python にはいくつかの種類のロックがあります。 ミューテックス ロック (Mutex): 一度に 1 つのスレッドまたはプロセスのみがリソースにアクセスできるようにします。条件変数: スレッドまたはプロセスが特定の条件を待ってからロックを取得できるようにします。読み取り/書き込みロック: 複数のスレッドが同時にリソースを読み取ることができますが、1 つのスレッドのみがリソースに書き込むことができます。

PHP 開発スキル: Gearman スケジュールされたタスクを使用して MySQL データベースを処理する方法 はじめに: Gearman は、タスクを並行して実行し、システムの処理能力を向上させるために使用できるオープンソースの分散タスク スケジューリング システムです。 PHP 開発では、時間のかかるタスクや非同期タスクを処理するために Gearman を使用することがよくあります。この記事では、Gearman を使用して、MySQL データベース操作を処理するスケジュールされたタスクを実装する方法を紹介します。 1. Linux システムに Gearman をインストールします。

この記事では、PHP に関する関連知識を提供します。主に PHP マルチプロセス開発に関連する問題を紹介します。ここでは、マルチプロセス開発の問題の概要と回答を示します。一緒に見てみましょう。みんなの役に立ちます。

ノードにマルチプロセスを実装するにはどうすればよいですか?ノードプロジェクトをデプロイするにはどうすればよいですか?次の記事は、Node.js マルチプロセス モデルとプロジェクトのデプロイメントに関する関連知識を習得するのに役立ちます。

コンピューターのパフォーマンスの向上とマルチコア プロセッサの普及により、マルチプロセス プログラミングは徐々に現代のプログラミング分野に不可欠な部分になってきました。 Go 言語では、マルチプロセス プログラミングも非常に簡単に実装できます。この記事ではGoでマルチプロセスを使う方法を紹介します。 1. ゴルーチン Go 言語では、ゴルーチンを通じて同時プログラミングを実現できます。 「Goroutine」は、Go 言語の「軽量スレッド」とみなすことができます。 Goroutine は Go ランタイムによってスケジュールされます。
