hypweb.net
XOOPSマニア  最新情報のRSS(サイト全体)
[ 自宅サーバーWebRing |ID=54 前後5表示乱移動サイト一覧 ]

TOP » UsersWiki » nao-pon » Vine Linux 6 (Haut Brion) の変更点
3: 2011-10-26 (水) 17:12:57 nao-pon ソース
With "urlbookmark" plugin.
現: 2013-04-11 (木) 20:47:59 nao-pon ソース
XOOPS 2 系における APC のセッション問題の解決案を追記
Line 63: Line 63:
~この「ニワトリが先かタマゴが先か」の問題を解決するために、 デストラクタから session_write_close() を コールすることが可能です。 ~この「ニワトリが先かタマゴが先か」の問題を解決するために、 デストラクタから session_write_close() を コールすることが可能です。
<< <<
--- XOOPS 2 の場合、kernel/session.php の XoopsSessionHandler クラスにデストラクタを追加することで APC 使用時も問題なくセッションが使えるようになる。+-- %%XOOPS 2 の場合、kernel/session.php の XoopsSessionHandler クラスにデストラクタを追加することで APC 使用時も問題なくセッションが使えるようになる。%% (NG: ob_start() で登録したコールバックにおいて、セッション変数を使えない。)
--- ---
#code(php,nonumber){{ #code(php,nonumber){{
Line 71: Line 71:
   }    }
}} }}
-- mod_xsendfile (0.12) - [[mod_xsendfile for Apache2/Apache2.2:https://tn123.org/mod_xsendfile/]] +-- 'session_write_close' を register_shutdown_function() 関数で登録するのが正解? 
--- &ref(mod_xsendfile.c); +>>オブジェクトをセッション保存ハンドラとして使うときには、 シャットダウン関数を PHP に登録しておくことが重要です。 これで、PHP スクリプトの終了時に内部的にオブジェクトを破棄する処理による副作用や、 write および close がコールされてしまうことを防げます。 一般的には、'session_write_close' を register_shutdown_function() 関数で登録しなければなりません。 
--- &ref(mod_xsendfile.c.diff); +<< 
---- [[効果絶大! の mod_xsendfile [nao-pon/blog/2010-05-19]>nao-pon/blog/2010-05-19]]+--- しかし、XOOPS 2 の include/common.php の session_set_save_handler() をコールしたあたりに、 
 +#code(php,217-){{ 
 +   session_set_save_handler(array(&$sess_handler, 'open'), array(&$sess_handler, 'close'), array(&$sess_handler, 'read'), array(&$sess_handler, 'write'), array(&$sess_handler, 'destroy'), array(&$sess_handler, 'gc')); 
 +   session_start(); 
 +   register_shutdown_function('session_write_close'); 
 +}} 
 +と、登録すると、タイミングの問題なのか、ob_start() で登録したコールバックにおいて、セッション変数を使えない。 
 +-- ob_start() でコールバックを指定して、そこで session_write_close() を実行するようにしてみた。 
 +--- 
 +#code(php,217-){{ 
 +   session_set_save_handler(array(&$sess_handler, 'open'), array(&$sess_handler, 'close'), array(&$sess_handler, 'read'), array(&$sess_handler, 'write'), array(&$sess_handler, 'destroy'), array(&$sess_handler, 'gc')); 
 +   session_start(); 
 +   ob_start(create_function('$output', 'session_write_close();return $output;')); 
 +}} 
 +ビンゴ!です。これで問題ありません。全て解決しました。 
 +- mod_xsendfile - [[mod_xsendfile for Apache2/Apache2.2:https://tn123.org/mod_xsendfile/]] 
 +-- 独自改造版 - [[nao-pon/mod_xsendfile:https://github.com/nao-pon/mod_xsendfile/tree/use_content-encoding]] 
 +-- [[効果絶大! の mod_xsendfile [nao-pon/blog/2010-05-19]>nao-pon/blog/2010-05-19]]
** データの引越し [#eda507a7] ** データの引越し [#eda507a7]


トップ   差分 バックアップ 複製 名前変更 リロード印刷に適した表示   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom Powered by xpWiki
Counter: 559, today: 1, yesterday: 1
このページのTopへ
メインメニュー
ログイン

ユーザー名:


パスワード:





パスワード紛失  |新規登録
最近の更新
オンライン状況
666 人のユーザが現在オンラインです。 (10 人のユーザが UsersWiki を参照しています。)

登録ユーザ: 0
ゲスト: 666

もっと...
サイト情報