ページへ戻る
印刷
PHP >= 5.2.10 + APC での session_set_save_handler() 問題の解決法
をテンプレートにして作成 ::
XOOPS マニア
UsersWiki
:nao-pon/blog/2010-04-10 をテンプレートにして作成
開始行:
#navi
RIGHT:&rsslink(../);
#boxdate
* PHP >= 5.2.10 + APC での session_set_save_handler() 問...
RIGHT:&tag(PHP,自宅サーバー,APC);
このページの以前の内容は間違いでした。(2011-10-21 追記)
** 正解は次のような感じです。
-- セッションのカスタムハンドラでオブジェクトを使用してい...
-- [[PHP: session_set_save_handler - Manual:http://www.ph...
> PHP 5.0.5 以降、write ハンドラおよび close ハンドラはオ...
~この「ニワトリが先かタマゴが先か」の問題を解決するために...
<
-- XOOPS 2 の場合、kernel/session.php の XoopsSessionHand...
---
#code(php,nonumber){{
// for PHP >= 5.0.5
function __destruct() {
session_write_close();
}
}}
** 以下は当時の記事で間違った対応策。
2010-01-13 の Blog で、PHP 5.3.1 + APC APC-3.1.3p1 で、XO...
- [[PHP5.2.10とAPC3.0.19の組み合わせでsession_set_save_ha...
-- 終了処理の順番が問題らしい。PHP5.2.10 以降では、スクリ...
~なので、APCの終了処理で、セッションハンドラーオブジェク...
- [[徒然と: pecl-APCとphp-5.2.10:http://blogs.dion.ne.jp/...
-- このページに上記の問題を解決する方法そのものがバッチリ...
-- その方法: APC の終了処理を PHP_RSHUTDOWN から ZEND_MOD...
#code(diff,nonumber){{{{
--- php_apc.c.org 2010-04-10 20:37:52.000000000 +0900
+++ php_apc.c 2010-04-10 23:10:44.000000000 +0900
@@ -314,7 +314,7 @@
/* }}} */
/* {{{ PHP_RSHUTDOWN_FUNCTION(apc) */
-static PHP_RSHUTDOWN_FUNCTION(apc)
+static ZEND_MODULE_POST_ZEND_DEACTIVATE_D(apc)
{
if(APCG(enabled)) {
apc_request_shutdown(TSRMLS_C);
@@ -1628,10 +1628,12 @@
PHP_MINIT(apc),
PHP_MSHUTDOWN(apc),
PHP_RINIT(apc),
- PHP_RSHUTDOWN(apc),
+ NULL,
PHP_MINFO(apc),
PHP_APC_VERSION,
- STANDARD_MODULE_PROPERTIES
+ NO_MODULE_GLOBALS,
+ ZEND_MODULE_POST_ZEND_DEACTIVATE_N(apc),
+ STANDARD_MODULE_PROPERTIES_EX
};
#ifdef COMPILE_DL_APC
}}}}
--- この修正を php_apc.c に行いリビルドしたら、バッチリOK...
*** その他の参考ページ
-[[PHP :: Bug #48787 :: session_set_save_handler: can't f...
-[[PECL :: Bug #16721 :: Fatal Error: Class xxx not found...
-[[PECL :: Bug #16745 :: APC causes object destruction / ...
-[[PHP: zend_module 構造体 - Manual:http://www.php.net/ma...
RIGHT:&font(90%){&page_comments;};
#navi
終了行:
#navi
RIGHT:&rsslink(../);
#boxdate
* PHP >= 5.2.10 + APC での session_set_save_handler() 問...
RIGHT:&tag(PHP,自宅サーバー,APC);
このページの以前の内容は間違いでした。(2011-10-21 追記)
** 正解は次のような感じです。
-- セッションのカスタムハンドラでオブジェクトを使用してい...
-- [[PHP: session_set_save_handler - Manual:http://www.ph...
> PHP 5.0.5 以降、write ハンドラおよび close ハンドラはオ...
~この「ニワトリが先かタマゴが先か」の問題を解決するために...
<
-- XOOPS 2 の場合、kernel/session.php の XoopsSessionHand...
---
#code(php,nonumber){{
// for PHP >= 5.0.5
function __destruct() {
session_write_close();
}
}}
** 以下は当時の記事で間違った対応策。
2010-01-13 の Blog で、PHP 5.3.1 + APC APC-3.1.3p1 で、XO...
- [[PHP5.2.10とAPC3.0.19の組み合わせでsession_set_save_ha...
-- 終了処理の順番が問題らしい。PHP5.2.10 以降では、スクリ...
~なので、APCの終了処理で、セッションハンドラーオブジェク...
- [[徒然と: pecl-APCとphp-5.2.10:http://blogs.dion.ne.jp/...
-- このページに上記の問題を解決する方法そのものがバッチリ...
-- その方法: APC の終了処理を PHP_RSHUTDOWN から ZEND_MOD...
#code(diff,nonumber){{{{
--- php_apc.c.org 2010-04-10 20:37:52.000000000 +0900
+++ php_apc.c 2010-04-10 23:10:44.000000000 +0900
@@ -314,7 +314,7 @@
/* }}} */
/* {{{ PHP_RSHUTDOWN_FUNCTION(apc) */
-static PHP_RSHUTDOWN_FUNCTION(apc)
+static ZEND_MODULE_POST_ZEND_DEACTIVATE_D(apc)
{
if(APCG(enabled)) {
apc_request_shutdown(TSRMLS_C);
@@ -1628,10 +1628,12 @@
PHP_MINIT(apc),
PHP_MSHUTDOWN(apc),
PHP_RINIT(apc),
- PHP_RSHUTDOWN(apc),
+ NULL,
PHP_MINFO(apc),
PHP_APC_VERSION,
- STANDARD_MODULE_PROPERTIES
+ NO_MODULE_GLOBALS,
+ ZEND_MODULE_POST_ZEND_DEACTIVATE_N(apc),
+ STANDARD_MODULE_PROPERTIES_EX
};
#ifdef COMPILE_DL_APC
}}}}
--- この修正を php_apc.c に行いリビルドしたら、バッチリOK...
*** その他の参考ページ
-[[PHP :: Bug #48787 :: session_set_save_handler: can't f...
-[[PECL :: Bug #16721 :: Fatal Error: Class xxx not found...
-[[PECL :: Bug #16745 :: APC causes object destruction / ...
-[[PHP: zend_module 構造体 - Manual:http://www.php.net/ma...
RIGHT:&font(90%){&page_comments;};
#navi
ページ名: