このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
| php:7.2:ext:zmq [2020/11/24 11:31] y2sunlight [テスト] | php:7.2:ext:zmq [2020/11/27 15:53] (現在) y2sunlight [テストコード] | ||
|---|---|---|---|
| 行 25: | 行 25: | ||
| PHPには拡張モジュールというものがあります。これはPHPの機能を拡張する為のもので、PHPエクステンションとも言われています。 | PHPには拡張モジュールというものがあります。これはPHPの機能を拡張する為のもので、PHPエクステンションとも言われています。 | ||
| - | XAMPPではいくつかの拡張モジュールがDLLとして同封されていますが、他のリポジトリからダウンロードすることも出来ます。 | + | XAMPPではいくつかの拡張モジュールがDLLとして同封されていますが、他のリポジトリからダウンロードすることも出来ます。拡張モジュールのリポジトリとしては [[https:// | 
| - | + | ||
| - | 拡張モジュールのリポジトリとしては [[https:// | + | |
| 本章では、PECL から拡張モジュールをインストールする方法を、[[https:// | 本章では、PECL から拡張モジュールをインストールする方法を、[[https:// | ||
| 行 47: | 行 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 | + | < | 
| + | php_zmq-1.1.3-7.2-ts-vc15-x64.zip | ||
| + | </ | ||
| === 配置 === | === 配置 === | ||
| 行 92: | 行 92: | ||
| </ | </ | ||
| - | '' | + | '' | 
| ==== DLLの確認 ==== | ==== DLLの確認 ==== | ||
| - | 外部からダウンロードした拡張モジュールのDLLを手動でインストールする場合は、設置場所を間違えたり依存関係のある他のモジュールが不足していたりする場合が少なくありません。従って、拡張モジュールを使用する前に、正常にロードされているか否かを確認しておきます。 | + | 外部からダウンロードした拡張モジュールのDLLを手動でインストールする場合は、設置場所を間違えたり、依存関係のある他のモジュールが不足していたりする場合が少なくありません。従って、拡張モジュールを使用する前に、正常にロードされているか否かを確認しておきます。 | 
| php.exeのあるフォルダに移動します (ここでは '' | php.exeのあるフォルダに移動します (ここでは '' | ||
| 行 157: | 行 157: | ||
| ===== テストコード ===== | ===== テストコード ===== | ||
| - | ZeroMQのインストールが出来たので、request-reply パターンのソケットを作って動作テストを行ってみましょう。 | + | ZeroMQのインストールが出来たので、request-reply パターンのソケットの動作テストを行ってみましょう。 | 
| - | サーバーは zeromq/ | + | サーバーは | 
| * https:// | * https:// | ||
| 行 180: | 行 180: | ||
| </ | </ | ||
| - | '' | + | '' | 
| - | 以下は、クライアントです。githubの例題には適当なものがなかったので、以下のように作りました。 | + | クライアントは、githubの例題には適当なものがなかったので、以下のように作りました。 | 
| <code php simple-client.php> | <code php simple-client.php> | ||
| 行 192: | 行 192: | ||
| /* Create a socket */ | /* Create a socket */ | ||
| - | $queue = new \ZMQSocket(new | + | $queue = new ZMQSocket(new ZMQContext(), | 
| $queue-> | $queue-> | ||
| $queue-> | $queue-> | ||
| 行 200: | 行 200: | ||
| </ | </ | ||
| - | '' | + | '' | 
| ZeroMQの特徴なのですが、'' | ZeroMQの特徴なのですが、'' | ||
| - | では、コマンドプロンプトを2つ起動し、プロジェクトフォルダに移動してクライアントから起動します。 | + | コードが出来たら、コマンドプロンプトを2つ起動し、プロジェクトフォルダに移動してクライアントを起動します。 | 
| <code dos> | <code dos> | ||
| 行 210: | 行 210: | ||
| </ | </ | ||
| - | クライアントはサーバーが起動しエコーバックされるのを待ちまます。 | + | クライアントは、サーバーが起動しエコーバックされるのを待ちます。 | 
| 別のコマンドプロンプトからサーバーを起動します。 | 別のコマンドプロンプトからサーバーを起動します。 | ||
| 行 219: | 行 219: | ||
| </ | </ | ||
| - | サーバーを起動直後に、クライアントにメッセージが返され、クライアントは終了します。 | + | サーバーは、起動直後、クライアントにメッセージを返し、クライアントは終了します。 | 
| - | + | ||
| - | <code dos> | + | |
| - | > php simple-client.php | + | |
| - | Hello | + | |
| - | </ | + | |
| - | もう一度、クライアントを起動します(今度は「Hi!」と言ってみましょう)。 | + | もう一度、クライアントを起動します(今度は「Hi!」と送ってみましょう)。 | 
| <code dos> | <code dos> | ||
| 行 237: | 行 232: | ||
| === request-reply パターン === | === request-reply パターン === | ||
| - | クライアントのセットをサービスのセットに接続します。これは、リモートプロシージャコールまたはタスクの分散パターンと同じです。同期('' | + | request-reply パターンは、クライアントをサービスに接続します。これは、リモートプロシージャコールと同じです。同期('' | 
| * https:// | * https:// | ||