Ground Sunlight

Windowsで作る - PHPプログラミングの開発環境

ユーザ用ツール

サイト用ツール


php:7.2:ext:zmq

差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
php:7.2:ext:zmq [2020/11/24 11:32]
y2sunlight [概要]
php:7.2:ext:zmq [2020/11/27 15:53] (現在)
y2sunlight [テストコード]
行 45: 行 45:
 ■ [DLL List] から [7.2 Thread Safe (TS) x64]を選択し、以下のファイルをダウンロードします。 ■ [DLL List] から [7.2 Thread Safe (TS) x64]を選択し、以下のファイルをダウンロードします。
  
-  * php_zmq-1.1.3-7.2-ts-vc15-x64.zip をダウンロード+<code> 
 +php_zmq-1.1.3-7.2-ts-vc15-x64.zip 
 +</code>
  
 === 配置 === === 配置 ===
行 90: 行 92:
 </code> </code>
  
-''extension=zmq'' を書く場所はどこでも良いですが、ここでは ''Dynamic Extensions'' と書かれている場所の最後尾に書きました。+''extension=zmq'' を書く場所はどこでも良いですが、ここでは ''Dynamic Extensions'' と書かれている場所の最後尾に追加しました。
  
 ==== DLLの確認 ==== ==== DLLの確認 ====
  
-外部からダウンロードした拡張モジュールのDLLを手動でインストールする場合は、設置場所を間違えたり依存関係のある他のモジュールが不足していたりする場合が少なくありません。従って、拡張モジュールを使用する前に、正常にロードされているか否かを確認しておきます。+外部からダウンロードした拡張モジュールのDLLを手動でインストールする場合は、設置場所を間違えたり依存関係のある他のモジュールが不足していたりする場合が少なくありません。従って、拡張モジュールを使用する前に、正常にロードされているか否かを確認しておきます。
  
 php.exeのあるフォルダに移動します (ここでは ''D:\usr\xampp7.2.22\php'' とします)。''deplister'' を使って php_zmq.dll の依存関係を確認してみます。''deplister'' は windowsの実行モジュールの依存関係をチェックするツールで、XAMPP では php.exe と一緒に配布されています。 php.exeのあるフォルダに移動します (ここでは ''D:\usr\xampp7.2.22\php'' とします)。''deplister'' を使って php_zmq.dll の依存関係を確認してみます。''deplister'' は windowsの実行モジュールの依存関係をチェックするツールで、XAMPP では php.exe と一緒に配布されています。
行 155: 行 157:
 ===== テストコード ===== ===== テストコード =====
  
-ZeroMQのインストールが出来たので、request-reply パターンのソケットを作って動作テストを行ってみましょう。+ZeroMQのインストールが出来たので、request-reply パターンのソケット動作テストを行ってみましょう。
  
-サーバーは zeromq/php-zmq のサンプルを使用します。+サーバーは GitHub(zeromq/php-zmqのサンプルを使用します。
  
   * https://github.com/zeromq/php-zmq/blob/master/examples/simple-server.php   * https://github.com/zeromq/php-zmq/blob/master/examples/simple-server.php
行 178: 行 180:
 </code> </code>
  
-''ZMQSocket'' のコンストラクターで ソケットタイプ ''ZMQ::SOCKET_REP'' を使用している点に注意して下さい。''recv()'' でメッセージを受け取り(ブロック)、受け取ると直ぐに、同じものをエコー( ''send($message)'' )しています。+''ZMQSocket'' のコンストラクターで ソケットタイプ ''ZMQ::SOCKET_REP'' を使用している点に注意して下さい。''recv()''クライアントからのメッセージを待ち、受け取ると直ぐに、同じものをエコー( ''send($message)'' )します。
  
-以下は、クライアントです。githubの例題には適当なものがなかったので、以下のように作りました。+クライアントは、githubの例題には適当なものがなかったので、以下のように作りました。
  
 <code php simple-client.php> <code php simple-client.php>
行 190: 行 192:
  
 /* Create a socket */ /* Create a socket */
-$queue = new \ZMQSocket(new \ZMQContext(), \ZMQ::SOCKET_REQ);+$queue = new ZMQSocket(new ZMQContext(), ZMQ::SOCKET_REQ);
 $queue->connect("tcp://127.0.0.1:5555"); $queue->connect("tcp://127.0.0.1:5555");
 $queue->setSockOpt (ZMQ::SOCKOPT_LINGER, 1000); $queue->setSockOpt (ZMQ::SOCKOPT_LINGER, 1000);
行 198: 行 200:
 </code> </code>
  
-''ZMQSocket'' のコンストラクターで ソケットタイプ ''ZMQ::SOCKET_REQ'' を使用している点(サーバー側は''ZMQ::SOCKET_REP''でした)注意して下さい。起動されると直ぐに、メッセージを ''send()'' して、''recv()'' でサーバーからのメッセージを待ちます。+''ZMQSocket'' のコンストラクターで ソケットタイプ ''ZMQ::SOCKET_REQ'' を使用している点(サーバー側は''ZMQ::SOCKET_REP''でした)注意して下さい。起動されると直ぐに、メッセージを ''send()'' して、''recv()'' でサーバーからのメッセージを待ちます。
  
 ZeroMQの特徴なのですが、''send()'' はサーバーが起動するまでリトライを続けます。 ZeroMQの特徴なのですが、''send()'' はサーバーが起動するまでリトライを続けます。
  
-では、コマンドプロンプトを2つ起動し、プロジェクトフォルダに移動してクライアントから起動します。+コードが出来たら、コマンドプロンプトを2つ起動し、プロジェクトフォルダに移動してクライアント起動します。
  
 <code dos> <code dos>
行 208: 行 210:
 </code> </code>
  
-クライアントはサーバーが起動しエコーバックされるのを待ちます。+クライアントはサーバーが起動しエコーバックされるのを待ちます。
  
 別のコマンドプロンプトからサーバーを起動します。 別のコマンドプロンプトからサーバーを起動します。
行 217: 行 219:
 </code> </code>
  
-サーバー起動直後、クライアントにメッセージされ、クライアントは終了します。 +サーバーは、起動直後、クライアントにメッセージ、クライアントは終了します。
- +
-<code dos> +
-> php simple-client.php +
-Hello +
-</code>+
  
-もう一度、クライアントを起動します(今度は「Hi!」とってみましょう)。+もう一度、クライアントを起動します(今度は「Hi!」とってみましょう)。
  
 <code dos> <code dos>
行 235: 行 232:
 === request-reply パターン === === request-reply パターン ===
  
-クライアントのセットをサービスのセットに接続します。これは、リモートプロシージャコールまたはタスクの分散パターンと同じです。同期(''REQ'' 及び ''REP'' ソケットタイプ)と非同期ソケットタイプ(''DEALER'' 及び ''ROUTER'' ソケットタイプ)の2つの基本的な種類があり、ここでは同期タイプを使用しています。詳しくは以下のドキュメントをご覧ください。+request-reply パターンは、クライアントをサービスに接続します。これは、リモートプロシージャコールと同じです。同期(''REQ'' 及び ''REP'' ソケットタイプ)と非同期ソケットタイプ(''DEALER'' 及び ''ROUTER'' ソケットタイプ)の2つの基本的な種類があり、ここでは同期タイプを使用しています。詳しくは以下のドキュメントをご覧ください。
  
   * https://zguide.zeromq.org/docs/chapter1/#Ask-and-Ye-Shall-Receive --- ZeroMQガイド: Ask and Ye Shall Receive   * https://zguide.zeromq.org/docs/chapter1/#Ask-and-Ye-Shall-Receive --- ZeroMQガイド: Ask and Ye Shall Receive
php/7.2/ext/zmq.1606185137.txt.gz · 最終更新: 2020/11/24 11:32 by y2sunlight