以下のサイトを参考にした。

http://d.hatena.ne.jp/ozuma/20120424/1335265500

 

configureで以下の指定を追加する事

php.ini

session.save_path = “tcp://127.0.0.1:6379,tcp://127.0.0.1:6380”

これだと、ラウンドロビンっぽく順にアクセスするので、障害対応にはならない。

 

アプリ側で指定するか、redis sentinel 使うか、仮想IP使うか・・。

CURLOPT_RESOLVE

動的ドメイン解決したかったが、5.6でも7.0betaでも使えない。

PHP Notice: Use of undefined constant CURLOPT_RESOLVE – assumed ‘CURLOPT_RESOLVE’ in /home/nilesflow/php/dynamic-host-curl/request.php on line 9

Notice: Use of undefined constant CURLOPT_RESOLVE – assumed ‘CURLOPT_RESOLVE’ in /home/nilesflow/php/dynamic-host-curl/request.php on line 9
PHP Warning: curl_setopt() expects parameter 2 to be long, string given in /home/nilesflow/php/dynamic-host-curl/request.php on line 9

Warning: curl_setopt() expects parameter 2 to be long, string given in /home/nilesflow/php/dynamic-host-curl/request.php on line 9

 

追加されてない?と思ったが、

http://stackoverflow.com/questions/24351152/how-to-manually-resolve-hosts-in-https-connections-in-php

https://bugs.php.net/bug.php?id=63488&edit=3

 

ChangeLogはある。

http://www.php.net/ChangeLog-5.php#5.5.0

 

ソースを見ると、libcurlのバージョンに

#if LIBCURL_VERSION_NUM >= 0x071503 /* Available since 7.21.3 */
REGISTER_CURL_CONSTANT(CURLAUTH_ONLY);
REGISTER_CURL_CONSTANT(CURLOPT_RESOLVE);
#endif

 

yuminstallだと、7.19までしか入らない

libcurl-7.19.7-46.el6-x86_64

 

libcurlを更新

wget http://www.execve.net/curl/curl-7.46.0.tar.bz2

tar xf curl-7.46.0.tar.bz2

cd curl-7.46.0

./configure –enable-libcurl-option

make

make install

 

phpをリビルド

cd /usr/local/src/php-5.6.12

./configure 前と同じオプション

make

make install

1. php phpredis

2. php predis

3. php predis-async

4. node.js redis

 

publish → subscribe までの時間

phpredis クライアントから26Mのファイル送信

クライアントpublish 0.3sec

1. 0.2sec

2. 0.5sec

3. 40sec ? 遅すぎ?

4. 4sec

 

ちなみにpublishにかかる時間

1. 0.3sec

2. 0.3sec

3. 35sec ? 遅すぎ?

4. 0.3sec

 

※上記複数クライアントを接続していたため、クライアント数を減らすと多少早くなる

 

——–

pubsub

お互いにsubscribe

subscribeを受けたら、publish

10000msg , 28byteデータ送信

 

1. node.js redis – node.js redis間

2. node.js redis – php phpredis間

2. node.js redis – php predis間

2. node.js redis – php predis-async間

 

結果

1.

pub完了 9041msg/sec

sub完了 7886msg/sec

2.

pub完了 12853msg/sec

sub完了 11834msg/sec

3.

pub完了 8319msg/sec

sub完了 6230msg/sec

4.

pub完了 8818msg/sec

sub完了 7342msg/sec

 

——–

ws-pubsub

wsからsend

お互いにsubscribe

subscribeを受けたら、publish

10000msg , 28byteデータ送信

 

1. node.js ws-client -> node.js ws-server & redis -> php phpredis

node.js ws-client <- node.js ws-server & redis <- php phpredis

 

ws-client 受信完了 1207msg/sec

ws-server pub完了 1216msg/sec

ws-server sub完了 1215msg/sec

phpredis pub完了 1216msg/sec

※redis-cli monitorで見ると、pubsub双方向は並列処理

※サーバは1cpu

PHPのインストール

 

関連ライブラリのインストール


yum install libxml2-devel

yum install libpng-devel

yum install libicu-devel

yum install libmcrypt-devel

yum install libxslt-devel

 

PHPのインストール


wget https://downloads.php.net/~ab/php-7.0.0beta2.tar.xz

tar Jxf php-7.0.0beta2.tar.xz

cd php-7.0.0beta2

./configure –prefix=/usr/local/php-7.0.0beta2 –enable-bcmath –enable-calendar –enable-gd-jis-conv –enable-gd-native-ttf –enable-intl –enable-mbstring –enable-mbregex –enable-pcntl –enable-soap –with-curl –with-freetype-dir –with-gettext –with-gd –with-jpeg-dir –with-libxml-dir –with-mcrypt –with-mhash –with-openssl –with-pcre-dir –with-png-dir –with-readl
ine –with-xsl –with-zlib

※mysql はwarningが出たので外した

※pearもテストでエラーになったので外した

 

make

make test

make install