Ground Sunlight

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

ユーザ用ツール

サイト用ツール


サイドバー

メインメニュー

XAMPP アレンジ

IED

WSL2

道具箱

リポジトリ編

フレームワーク編

公開ソフトウェア

メタ
リンク


このページへのアクセス
今日: 1 / 昨日: 2
総計: 2271

php:7.2:ext:zmq

PHP7.2 ZeroMQのインストール

Version 7.2.22 — y2sunlight 2020-11-20

PHPに戻る

関連記事

リンク

php7.3で動作するZeroMQのWinodwsバイナリはまだ公式には公開されていません。
(2020/11/23現在)

概要

PHPには拡張モジュールというものがあります。これはPHPの機能を拡張する為のもので、PHPエクステンションとも言われています。

XAMPPではいくつかの拡張モジュールがDLLとして同封されていますが、他のリポジトリからダウンロードすることも出来ます。拡張モジュールのリポジトリとしては PECL (ピクル) が有名です。PECL は PEAR 同様に pecl コマンドを使ってインストールする方法が提供されていますが、Winodwsの場合は php.ini を編集し、手動でDLLを設置する方が一般的です。

本章では、PECL から拡張モジュールをインストールする方法を、ZeroMQを例に説明します。

ZeroMQ

ZeroMQ は、高性能の非同期メッセージングライブラリです。スペルはZMQ 、0MQとも書きます。

ZeroMQ は、TCP、プロセス内、プロセス間、マルチキャスト、WebSocketなどの様々なトランスポートで使用でき、pub/sub、request/reply、client/serverなどの一般的なメッセージング方式をサポートしいます。詳細はZeroMQのドキュメントをご覧ください。

XAMPP 7.2.22 では ZeroMQ はDLLが同封されていないので、PECL からダウンロードする必要があります。


ダウンロードと配置

PECL の ZeroMQ のダウンロードサイト( http://pecl.php.net/package/zmq/1.1.3/windows )にアクセスします。

■ [DLL List] から [7.2 Thread Safe (TS) x64]を選択し、以下のファイルをダウンロードします。

php_zmq-1.1.3-7.2-ts-vc15-x64.zip

配置

ダウンロードしたファイルを解凍します。

COPYING.LESSER.LIBZMQ
libzmq.dll
libzmq.pdb
LICENSE
LICENSE.LIBSODIUM
php_zmq.dll
php_zmq.pdb
README.md

php_zmq.dll を以下にコピーします:

{XAMPP Install-Folder}\php\ext\php_zmq.dll

libzmq.dlll を以下にコピーします:

{XAMPP Install-Folder}\php\libzmq.dlll


php.iniの編集

php.ini の中に、extensionディレクティブを使って php_zmq.dll を拡張モジュールとして追加します。extension の使い方は、本編の「PHP7.2 intlのインストール」を参照して下さい。

{XAMPP Install Folder}\php\php.ini

php.ini
;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;
 
...

;ZQM php bainding
extension=zmq

extension=zmq を書く場所はどこでも良いですが、ここでは Dynamic Extensions と書かれている場所の最後尾に追加しました。

DLLの確認

外部からダウンロードした拡張モジュールのDLLを手動でインストールする場合は、設置場所を間違えたり、依存関係のある他のモジュールが不足していたりする場合が少なくありません。従って、拡張モジュールを使用する前に、正常にロードされているか否かを確認しておきます。

php.exeのあるフォルダに移動します (ここでは D:\usr\xampp7.2.22\php とします)。deplister を使って php_zmq.dll の依存関係を確認してみます。deplister は windowsの実行モジュールの依存関係をチェックするツールで、XAMPP では php.exe と一緒に配布されています。

D:\usr\xampp7.2.22\php> deplister ext\php_zmq.dll
 
php7ts.dll,OK
libzmq.dll,OK
KERNEL32.dll,OK
VCRUNTIME140.dll,OK
api-ms-win-crt-heap-l1-1-0.dll,OK
api-ms-win-crt-runtime-l1-1-0.dll,OK

全てにOKが表示されていたら依存しているモジュールは全て揃っていることが分かります。次に、正しくロードできているか否かを php -m を使って確認します。

D:\usr\xampp7.2.22\php> php -m
 
[PHP Modules]
...
zmq
...

[PHP Modules] の中に zmq が含まれていたら正常にロードできています。

Apatchを再起動して下さい。


コード補完用スタブの設置

EclipseなどのIDEで、ZeroMQ のコード補完ができない場合は、スタブを設置して使用します。スタブは以下のURLで公開されています。

プロジェクトフォルダに以下のcomposer.jsonを設置します。既に composer.json がある場合は、マージして下さい。

composer.json
{
    "require-dev": {
        "moriony/php-zmq-stubs": "dev-master"
    }
}

コマンドプロンプトで次のコマンドを実行します:

composer install --dev

Eclipseの場合は、ここで設置した {Project-Folder}/vendor/moriony/php-zmq-stubs をビルトパスに追加して下さい。


テストコード

ZeroMQのインストールが出来たので、request-reply パターンのソケットの動作テストを行ってみましょう。

サーバーは GitHub(zeromq/php-zmq) のサンプルを使用します。

simple-server.php
<?php
/*
    The server waits for messages from the client
    and echoes back the received message
*/
$server = new ZMQSocket(new ZMQContext(), ZMQ::SOCKET_REP);
$server->bind("tcp://127.0.0.1:5555");
 
/* Loop receiving and echoing back */
while ($message = $server->recv()) {
    echo "Got message: $message\n";
    /* echo back the message */
    $server->send($message);
}

ZMQSocket のコンストラクターで ソケットタイプ ZMQ::SOCKET_REP を使用している点に注意して下さい。recv() でクライアントからのメッセージを待ち、受け取ると直ぐに、同じものをエコー( send($message) )します。

クライアントは、githubの例題には適当なものがなかったので、以下のように作りました。

simple-client.php
<?php
/*
    The client sends message to the server
*/
$message = count($argv)>1 ? $argv[1] : 'Hello';
 
/* Create a socket */
$queue = new ZMQSocket(new ZMQContext(), ZMQ::SOCKET_REQ);
$queue->connect("tcp://127.0.0.1:5555");
$queue->setSockOpt (ZMQ::SOCKOPT_LINGER, 1000);
 
$queue->send($message);
echo $queue->recv();

ZMQSocket のコンストラクターで ソケットタイプ ZMQ::SOCKET_REQ を使用している点(サーバー側はZMQ::SOCKET_REPでした)に注意して下さい。起動されると直ぐに、メッセージを send() して、recv() でサーバーからのメッセージを待ちます。

ZeroMQの特徴なのですが、send() はサーバーが起動するまでリトライを続けます。

コードが出来たら、コマンドプロンプトを2つ起動し、プロジェクトフォルダに移動してクライアントを起動します。

> php simple-client.php

クライアントは、サーバーが起動しエコーバックされるのを待ちます。

別のコマンドプロンプトからサーバーを起動します。

> php simple-server.php
Got message: Hello

サーバーは、起動直後、クライアントにメッセージを返し、クライアントは終了します。

もう一度、クライアントを起動します(今度は「Hi!」と送ってみましょう)。

> php simple-client.php Hi!
Hi!

サーバーが起動済なので、エコーは直ぐに返ってきます。

request-reply パターン

request-reply パターンは、クライアントをサービスに接続します。これは、リモートプロシージャコールと同じです。同期(REQ 及び REP ソケットタイプ)と非同期ソケットタイプ(DEALER 及び ROUTER ソケットタイプ)の2つの基本的な種類があり、ここでは同期タイプを使用しています。詳しくは以下のドキュメントをご覧ください。


コメント

test216.169.129.254, 2022/11/29 05:33

https://www.mlbbaseballjerseys.us.org/ https://www.jerseyswholesale.com.co/ https://www.footballstore.us.com/ https://www.nflfootballjerseysnew.us.com/ https://www.officialbaseballjerseys.us.com/ https://www.jerseyscheap.com.co/ https://www.officialmlbstore.us.com/ https://www.nflgearuniforms.us/ https://www.nbastores.com.co/ https://www.mlbjerseysforcheap.us.com/ https://www.cheap-jerseyswholesale.com.co/ https://www.mlbjerseyswholesalecheap.us.com/ https://www.footballjerseys.com.co/ https://www.hockeyjerseyscheap.us/ https://www.cheapjerseyssale.us.org/ https://www.nflfanshop.com.co/ https://www.footballjerseyscheapest.us.com/ https://www.baseballjerseyssale.us.com/ https://www.jerseysforcheapwholesale.us/ https://www.hockeyjerseyswholesale.us.com/ https://www.cheapjerseysfromchinawholesale.com.co/ https://www.cheapfootballjerseysfromchina.us.com/ https://www.nfl-shop.com.co/ https://www.nflstoreonlineshopping.us/ https://www.nflfootballjerseys.com.co/ https://www.baseballjerseyscheap.us.com/ https://www.cheapnfljerseysfromchina.com.co/ https://www.mlbbaseballjerseyscheap.us.com/ https://www.cheaphockeyjerseys.us.com/ https://www.bestnfljerseyscheap.us.com/ https://www.footballproshop.us.com/ https://www.nbashop.us.org/ https://www.nfljerseysofficialshop.us/ https://www.nflstores.com.co/ https://www.footballstores.us.com/ https://www.baseballjerseyscheapwholesale.us.com/ https://www.officialnfljersey.us.com/ https://www.cheapbaseballjerseyswholesale.us.com/ https://www.basketballjerseyswholesale.us/ https://www.cheapbasketballjerseyswholesale.us.com/ https://www.newfootballjerseys.us.com/ https://www.bestfootballjerseys.us.com/ https://www.baseball-jerseys.us.com/ https://www.cheapjerseysfromchinawholesale.com/ https://www.jerseyswholesaleforcheap.us.com/ https://www.nfljerseyscheap.com.co/ https://www.wholesalecheapjerseysfromchina.us/ https://www.nbajerseysnew.us.com/ https://www.wholesalecheapjerseysshop.com.co/ https://www.wholesalefootballjerseyscheap.us.com/ https://www.cheapnfljerseyswholesale.com.co/ https://www.nhlstore.com.co/ https://www.wholesalejerseyscheapest.us.com/ https://www.cheapwholesalejerseys.com.co/ https://www.basketballjerseyscheapwholesale.us.com/ https://www.mlbshops.com.co/ https://www.baseballjerseyswholesale.us/ https://www.wholesalejerseysforcheap.com/ https://www.nflshop.com.co/ https://www.wholesalejerseyschina.com.co/ https://www.nflgear.com.co/ https://www.footballjerseysforcheap.us.com/ https://www.nhljerseysforcheap.us.com/ https://www.footballstoreonlineshopping.us.com/ https://www.cheapjerseyswholesalefreeshipping.com.co/ https://www.cheapestjerseysfromchinafactory.us.com/ https://www.basketballjerseyswholesale.us.com/ https://www.nflfootballjerseysforcheap.com/ https://www.nhljerseyscheapwholesale.us.com/ https://www.nflproshops.com.co/ https://jerseysforcheapwholesale.us.com/ https://www.nhlhockeyjerseyswholesale.us.com/ https://www.jerseyscheapwholesalefromchina.us.com/ https://www.officialfootballjerseys.us.com/ https://www.basketballapparel.us/ https://www.hockeystores.us.com/ https://www.cheap-nfljerseys.com.co/ https://www.nflfanshop.us.com/

test27.153.246.230, 2023/03/08 17:01

https://www.nikeshoesoutletfactory.us.com/ https://www.jordan11red.us.com/ https://www.jordans1s.us.com/ https://www.shoeslouboutin.us.com/ https://www.yeezys-shoes.us.org/ https://www.jacketsmoncleroutlet.us.com/ https://www.jordan-shoesformen.us.com/ https://www.air-jordans11.us.com/ https://www.jordan11sshoes.us/ https://www.pandorajewelryofficial-site.us/ https://www.jordanretro-11.us.com/ https://www.jordan5.us.com/ https://www.goldengoosesneakerss.us.com/ https://www.airjordan3s.us/ https://www.airmax-95.us.com/ https://www.fitflop-shoes.us.org/ https://www.lebron-shoes.us.com/ https://www.jordan11low.us.com/ https://www.nikesoutletstoreonlineshopping.us.com/ https://www.jordans-4.us/ https://www.monclerjacketsstore.us.com/ https://www.nikefactoryoutlets.us.org/ https://www.airjordanshoess.us.com/ https://www.airjordansneakers.us.com/ https://www.jordans5.us/ https://www.jordanscheapshoes.us/ https://www.jordans-sneakers.us.com/ https://www.jamesharden-shoes.us.org/ https://www.pandorajewellery.us.com/ https://www.jordan13s.us/ https://www.christianlouboutinshoesinc.us.com/ https://www.adidasyeezysneakers.us.com/ https://www.pandorascharms.us.com/ https://www.jordanretros.us.com/ https://www.monclercom.us.com/ https://www.jordan12retros.us/ https://www.nike--shoes.us.com/ https://www.kyrieirving-shoes.us.org/ https://www.nikeairmax-shoes.us.com/ https://www.jordan14.us.com/ https://www.nike-jordans.us.com/ https://www.retrosjordans.us/ https://www.jordans1.us.com/ https://www.vanscom.us.com/ https://www.fjallraven-kanken.us.com/ https://www.huarachesnike.us.com/ https://www.goldengooseoutletfactory.us.com/ https://www.coatsmoncler.us.com/ https://www.nikeshoesforwomens.us.com/ https://www.airforceoneshoes.us.com/ https://www.pandoracanadajewelry.ca/ https://www.christianslouboutin.uk.com/ https://www.air-jordan4.us.com/ https://www.goldengoosemidstar.us.com/ https://www.nikeairjordan.us.com/ https://www.goldengoosesales.us.com/ https://www.airjordanretro11.us.com/ https://www.sneakersgoldengoose.us.com/ https://www.airjordan1s.us.org/ https://www.jordans-11.us/ https://www.jordan-8.us/ https://www.air-jordan6.us/ https://www.eccos.us.com/ https://www.nikesnkrs.us.com/ https://www.jordan-retro6.us/ https://www.air-jordansneakers.us/ https://www.jordanshoess.us.com/ https://www.nmds.us.com/ https://www.pandoraringssite.us/ https://www.air-max90.us.com/ https://www.jordan1lows.us.com/ https://www.nike-airmax2018.us.com/ https://www.nikeshoes-cheap.us.com/ https://www.airmax270s.us.com/ https://www.jordansneakerss.us/ https://www.nikeofficialwebsite.us.com/ https://www.airjordan5.us/ https://www.nikeoutletshoes.us.com/ https://www.retro-jordans.us/ https://www.air-jordan12.us/ https://www.jordan1universityblue.us.com/ https://www.valentinosshoes.us.org/ https://www.yeezys-shoes.us.com/ https://www.airjordan6rings.us/ https://www.ggdbs.us.com/ https://www.jordan12retro.us.com/ https://www.newnikeshoes.us.com/ https://www.monclervest.us.com/ https://www.goldengoosessneakers.us.com/ https://www.goldensgoose.us.com/ https://www.pandora-braceletcharms.us/ https://www.jordan13.us.org/ https://www.monclerstores.us.com/ https://www.new-jordans.us.com/ https://www.airjordan11s.us.com/ https://www.balenciagatriples.us.org/ https://www.adidasnmdr1.us.org/ https://www.air-jordan6.us.com/ https://www.ferragamos.us.org/ https://www.outletnikestore.us.com/ https://www.airjordansnew.us.com/ https://www.adidasyeezysshoes.us.com/ https://www.jordan11ssneakers.us/ https://www.jordan1.us.com/ https://www.newjordan11.us/ https://www.nikeair-maxs.us.com/ https://www.jordan-retro1.us.com/ https://www.canadapandoracharms.ca/ https://www.nikesales.us.com/ https://www.air-jordanssneakers.us/ https://www.pandorasjewelry.us.com/ https://www.mensnikeshoes.us.com/ https://www.nikeoutletfactorys.us.com/ https://www.jordanshoesretro.us.com/ https://www.jordansshoesforsale.us.com/ https://www.pandoraonline.us/ https://www.air-jordan1s.us.com/ https://www.nikesfactory.us.com/ https://www.pandorajewelryofficialsite.us.com/ https://www.nikeair-jordan1.us.com/ https://www.goldengooseshoess.us.com/ https://www.jordansretro3.us/ https://www.ggdbsneakers.us.com/ https://www.jordan9.us.com/ https://www.ggdbshoes.us.com/ https://www.nikeairmax98.us/ https://www.redbottomshoeslouboutin.us.com/ https://www.yeezys.com.co/ https://www.birkin-bag.us.com/ https://www.christianslouboutinshoes.us.com/ https://www.outletgoldengoose.us.com/ https://www.louboutinshoesheels.us.com/ https://www.jordan-12.us.com/ https://www.newjordansshoes.us.com/ https://www.redbottomslouboutin.us.org/ http://www.pandorarings.us.com/ https://www.retrosairjordan.us/ https://www.redbottomshoesforwomen.us.com/ https://www.balenciagaofficial.us.com/ https://www.jordans4retro.us/ https://www.yeezyonline.us.com/ https://www.nikeoutletstoresonlineshopping.us.com/ https://www.jordans11.us.com/ https://www.airmax270.us.org/ https://www.soccercleats.us.com/ https://www.yeezy.us.org/ https://www.asics-running-shoes.us.com/ https://www.jordan10.us.com/ https://www.christian-louboutinheels.us.com/ https://www.jordansretro12.us/ https://www.jordan-4.us.com/ https://www.airjordan4s.us/ https://www.jordanretro11mens.us/ https://www.pandoras.us.com/

コメントを入力. Wiki文法が有効です:
 
php/7.2/ext/zmq.txt · 最終更新: 2020/11/27 15:53 by y2sunlight