2009年5月 8日

[Apache-Users 7361] php-5.2.9-session-id-add-route.patch formod_balancer.

** Apache ユーザーズメーリングリスト **
** 注意:このメールへの返信は Apache-Users へ行きます **


鬼生田です。

 apache 2.2.Xのmod_balancerモジュールにて、sticky sessionを使用
するための、route文字列を付加するPHP 5.2.9用パッチです。


 tomcatでは簡単にできることなのですが、PHPではできそうにありませ
ん。検索してみましたが、納得にいく解が得られず、PHP本体を改造する
ことにしました。

既に同様のパッチが作成されているのでしたら、情報をいただけることを
期待しつつ、パッチを公開させていただきます。


仕様:PHP 5.2.9をインストールしたサーバの一語ホスト名をsession id
の最後に付加する。

例: zaku.oni.gr.jp なら、XXXXXXXX.zaku となる。

テスト:FreeBSD 6.4-stable, CentOS 4.7 にて動作確認をしております。

diff -crN ext.org/session/mod_files.c ext/session/mod_files.c
*** ext.org/session/mod_files.c Wed Dec 31 20:17:43 2008
--- ext/session/mod_files.c Thu Apr 23 18:23:21 2009
***************
*** 79,84 ****
--- 79,85 ----
|| (c >= 'A' && c <= 'Z')
|| (c >= '0' && c <= '9')
|| c == ','
+ || c == '.' /*** 2009/04/23 K.Oniuda ***/
|| c == '-')) {
ret = 0;
break;
diff -crN ext.org/session/session.c ext/session/session.c
*** ext.org/session/session.c Wed Dec 31 20:17:43 2008
--- ext/session/session.c Thu Apr 23 18:16:59 2009
***************
*** 722,727 ****
--- 722,737 ----
zval **token;
char *remote_addr = NULL;

+ /*** 2009/04/23 K.Oniuda ***/
+ char *p,hostname[MAXHOSTNAMELEN];
+ int ret_code;
+
+ ret_code = gethostname(hostname, sizeof(hostname));
+ if ( ret_code == 0 ) {
+ p = strchr(hostname, '.');
+ if (p != NULL) *p = '\0';
+ }
+
gettimeofday(&tv, NULL);

if (zend_hash_find(&EG(symbol_table), "_SERVER",
***************
*** 799,804 ****
--- 809,817 ----

if (newlen)
*newlen = j;
+ /*** 2009/04/23 K.Oniuda ***/
+ strcat(buf , ".");
+ strcat(buf , hostname);
return buf;
}


--
入退会・変更・配送一時停止は以下へ
http://mm.apache.jp/mailman/listinfo/apache-users

投稿者 xml-rpc : 2009年5月 8日 00:29
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/84853
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。