私はUbuntu 14.04の仮想マシン内でnginx 1.4.6およびphp 5.5上でWebサーバーを実行していますので、ZeroMQ拡張機能をインストールする必要があります。私は(UNIXライクなシステムに構築するにはセクション)ZMQ上の指示に従っている、PHPの私のバージョンに対してそれをコンパイルし、指示hereのような結合PHP言語を追加して/etc/php5/cli/php.ini
にラインクラスZMQContextが見つかりません
extension=zmq.so
を追加しました私にとって唯一の.ini
ファイルである/etc/php5/fpm/php.ini
にもなります。次nginx
とphp-fpm
php -i
ショー再起動した後
:
$ php -i | grep -i zmq
zmq
ZMQ extension => enabled
ZMQ extension version => @[email protected]
libzmq version => 4.0.4
をそうZMQモジュールがCLIにインストールされているが、私はphpinfo();
でページを訪問したときに、私はZMQモジュールの構成セクションを参照してくださいしていません私はエラーメッセージを取得、コード$context = new \ZMQContext();
が呼び出されたページにアクセス:
クラスのZMQContext「'は見つかりません
ZMQモジュールは明らかにcli内に正しく読み込まれていますが、何らかの理由でphp-fpmで認識されません。私は、fpm php.ini
がロードされており、拡張子が付いている行があることを二重チェックしました。
私もラチェットとループ内の別々のWebSocketサーバーを実行し、加入者にプッシュする着信メッセージをリッスンするスクリプトpush-server.php
いる:php push-server.php
を実行した後、それはZMQモジュールので、エラーなしで
<?php
require dirname(__DIR__) . '/vendor/autoload.php';
require dirname(__DIR__) . '/app/libs/Pusher/Pusher.php';
$loop = React\EventLoop\Factory::create();
$pusher = new App\Libs\Pusher\Pusher; // my own pusher implementation
$context = new React\ZMQ\Context($loop);
$pull = $context->getSocket(ZMQ::SOCKET_PULL);
$pull->bind('tcp://127.0.0.1:5555');
$pull->on('message', [$pusher, 'onMessageEntry']);
$pull->on('subscribe', [$pusher, 'onSubscribe']);
$webSock = new React\Socket\Server($loop);
$webSock->listen(8099, '0.0.0.0');
$webServer = new Ratchet\Server\IoServer(
new Ratchet\Http\HttpServer(
new Ratchet\WebSocket\WsServer(
new Ratchet\Wamp\WampServer(
$pusher
)
)
),
$webSock
);
$loop->run();
を実行しますcliに正しくロードされています。
私は既に試したものはhereですが、運はありません。同様の質問hereがありますが、ウィンドウとワンプサーバーに集中しています。
これはどうして起こっているのでしょうか?それは非常に高く評価されます。
同じ問題がまだ解決しない... –
これはうまくいきませんが、私が使っているコード(これはうまくいきます)は次のようになります: '$ context = new \ React \ ZMQ \ Context $ループ); '。したがって、名前空間にはバックスラッシュがあります。また、あなたは、モジュールがcliではなく、fpmではないと言っています...正しいiniをfpmに使用していて、モジュールをロードできますか?また、 'phpinfo()'のスクリプトが実行されたときにエラーや警告がないことを確認してください。 – Johannes
名前空間に先行するバックスラッシュを追加しても、 'push-server.php'がうまく起動しません。これはphp cliで呼び出されるため、問題は私のページの' $ context = new \ ZMQContext ); 'php fpmにはzmqがロードされていません。 'phpinfo()'を呼び出すときにエラーはなく、zmqモジュールはモジュールのリストにないだけです。私はPHPを5.6にアップグレードしようとしましたが、それでも同じです。 –