From: Brion Vibber Date: Tue, 17 Jan 2006 23:43:15 +0000 (+0000) Subject: * Add ".deps.php" include-file preloaders for some dynamically-loaded X-Git-Tag: 1.6.0~491 X-Git-Url: https://git.cyclocoop.org/%27.WWW_URL.%27admin/?a=commitdiff_plain;h=b380b0a76aba653869d9d14933e1c21f88993a17;p=lhc%2Fweb%2Fwiklou.git * Add ".deps.php" include-file preloaders for some dynamically-loaded language and skin classes. Should help with the broken base-class problem under PHP 5 with APC as opcode cache. See details: http://mail.wikipedia.org/pipermail/wikitech-l/2006-January/033660.html --- diff --git a/RELEASE-NOTES b/RELEASE-NOTES index 6542a4e10d..99a10d643d 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -536,6 +536,10 @@ fully support the editing toolbar, but was found to be too confusing. * (bug 3350) Missing label for move talk page checkbox. * (bug 2108) Sort entries when using category browser * (bug 2393) Fix MIME type for Atom feeds ( application/rss+atom ) +* Add ".deps.php" include-file preloaders for some dynamically-loaded + language and skin classes. Should help with the broken base-class + problem under PHP 5 with APC as opcode cache. See details: + http://mail.wikipedia.org/pipermail/wikitech-l/2006-January/033660.html === Caveats === diff --git a/includes/Setup.php b/includes/Setup.php index d84ec66f6e..fe4ce1e060 100644 --- a/includes/Setup.php +++ b/includes/Setup.php @@ -241,6 +241,8 @@ if( $wgLangClass == $wgContLangClass ) { $wgLang = &$wgContLang; } else { wfSuppressWarnings(); + // Preload base classes to work around APC/PHP5 bug + include_once("$IP/languages/$wgLangClass.deps.php"); include_once("$IP/languages/$wgLangClass.php"); wfRestoreWarnings(); diff --git a/includes/Skin.php b/includes/Skin.php index f5c2f801d0..09f39e4102 100644 --- a/includes/Skin.php +++ b/includes/Skin.php @@ -21,7 +21,8 @@ $skinDir = dir($IP.'/skins'); # while code from www.php.net while (false !== ($file = $skinDir->read())) { - if(preg_match('/^([^.].*)\.php$/',$file, $matches)) { + // Skip non-PHP files, hidden files, and '.dep' includes + if(preg_match('/^([^.]*)\.php$/',$file, $matches)) { $aSkin = $matches[1]; $wgValidSkinNames[strtolower($aSkin)] = $aSkin; } @@ -115,6 +116,10 @@ class Skin extends Linker { # Grab the skin class and initialise it. Each skin checks for PHPTal # and will not load if it's not enabled. + wfSuppressWarnings(); + // Preload base classes to work around APC/PHP5 bug + include_once( $IP.'/skins/'.$skinName.'.deps.php' ); + wfRestoreWarnings(); require_once( $IP.'/skins/'.$skinName.'.php' ); # Check if we got if not failback to default skin diff --git a/languages/Language.php b/languages/Language.php index f509a77e97..ec670f5d0d 100644 --- a/languages/Language.php +++ b/languages/Language.php @@ -3054,8 +3054,14 @@ class Language { } +# FIXME: Merge all UTF-8 support code into Language base class. +# We no longer support Latin-1 charset. +require_once( 'LanguageUtf8.php' ); + # This should fail gracefully if there's not a localization available wfSuppressWarnings(); +// Preload base classes to work around APC/PHP5 bug +include_once( 'Language' . str_replace( '-', '_', ucfirst( $wgLanguageCode ) ) . '.deps.php' ); include_once( 'Language' . str_replace( '-', '_', ucfirst( $wgLanguageCode ) ) . '.php' ); wfRestoreWarnings(); diff --git a/languages/LanguageAb.deps.php b/languages/LanguageAb.deps.php new file mode 100644 index 0000000000..e08bfc2293 --- /dev/null +++ b/languages/LanguageAb.deps.php @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/languages/LanguageAv.deps.php b/languages/LanguageAv.deps.php new file mode 100644 index 0000000000..c9a6d3571f --- /dev/null +++ b/languages/LanguageAv.deps.php @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/languages/LanguageAy.deps.php b/languages/LanguageAy.deps.php new file mode 100644 index 0000000000..3f2d8c2d31 --- /dev/null +++ b/languages/LanguageAy.deps.php @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/languages/LanguageBa.deps.php b/languages/LanguageBa.deps.php new file mode 100644 index 0000000000..b694940433 --- /dev/null +++ b/languages/LanguageBa.deps.php @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/languages/LanguageBm.deps.php b/languages/LanguageBm.deps.php new file mode 100644 index 0000000000..40d5b35c95 --- /dev/null +++ b/languages/LanguageBm.deps.php @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/languages/LanguageCe.deps.php b/languages/LanguageCe.deps.php new file mode 100644 index 0000000000..08b934b4d0 --- /dev/null +++ b/languages/LanguageCe.deps.php @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/languages/LanguageCv.deps.php b/languages/LanguageCv.deps.php new file mode 100644 index 0000000000..3b548b249e --- /dev/null +++ b/languages/LanguageCv.deps.php @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/languages/LanguageGem_alsatian.deps.php b/languages/LanguageGem_alsatian.deps.php new file mode 100644 index 0000000000..e1e2b9820f --- /dev/null +++ b/languages/LanguageGem_alsatian.deps.php @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/languages/LanguageGn.deps.php b/languages/LanguageGn.deps.php new file mode 100644 index 0000000000..1976ebbcc1 --- /dev/null +++ b/languages/LanguageGn.deps.php @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/languages/LanguageIi.deps.php b/languages/LanguageIi.deps.php new file mode 100644 index 0000000000..8fb9cfb068 --- /dev/null +++ b/languages/LanguageIi.deps.php @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/languages/LanguageKv.deps.php b/languages/LanguageKv.deps.php new file mode 100644 index 0000000000..8f82de30ab --- /dev/null +++ b/languages/LanguageKv.deps.php @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/languages/LanguageNah.deps.php b/languages/LanguageNah.deps.php new file mode 100644 index 0000000000..cbad90bbf9 --- /dev/null +++ b/languages/LanguageNah.deps.php @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/languages/LanguageNap.deps.php b/languages/LanguageNap.deps.php new file mode 100644 index 0000000000..e8cfeae13a --- /dev/null +++ b/languages/LanguageNap.deps.php @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/languages/LanguageNon.deps.php b/languages/LanguageNon.deps.php new file mode 100644 index 0000000000..31a5255217 --- /dev/null +++ b/languages/LanguageNon.deps.php @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/languages/LanguageOs.deps.php b/languages/LanguageOs.deps.php new file mode 100644 index 0000000000..8cd42d8c0c --- /dev/null +++ b/languages/LanguageOs.deps.php @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/languages/LanguagePt_br.deps.php b/languages/LanguagePt_br.deps.php new file mode 100644 index 0000000000..f5d738ad73 --- /dev/null +++ b/languages/LanguagePt_br.deps.php @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/languages/LanguageQu.deps.php b/languages/LanguageQu.deps.php new file mode 100644 index 0000000000..0a9f460c59 --- /dev/null +++ b/languages/LanguageQu.deps.php @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/languages/LanguageTy.deps.php b/languages/LanguageTy.deps.php new file mode 100644 index 0000000000..cdafb294cb --- /dev/null +++ b/languages/LanguageTy.deps.php @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/languages/LanguageUdm.deps.php b/languages/LanguageUdm.deps.php new file mode 100644 index 0000000000..e8cbcab371 --- /dev/null +++ b/languages/LanguageUdm.deps.php @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/languages/LanguageVec.deps.php b/languages/LanguageVec.deps.php new file mode 100644 index 0000000000..89c063f8f8 --- /dev/null +++ b/languages/LanguageVec.deps.php @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/languages/LanguageZa.deps.php b/languages/LanguageZa.deps.php new file mode 100644 index 0000000000..01c3bb72ca --- /dev/null +++ b/languages/LanguageZa.deps.php @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/languages/LanguageZh.deps.php b/languages/LanguageZh.deps.php new file mode 100644 index 0000000000..593e875552 --- /dev/null +++ b/languages/LanguageZh.deps.php @@ -0,0 +1,9 @@ + \ No newline at end of file diff --git a/languages/LanguageZh_hk.deps.php b/languages/LanguageZh_hk.deps.php new file mode 100644 index 0000000000..2c08455459 --- /dev/null +++ b/languages/LanguageZh_hk.deps.php @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/languages/LanguageZh_sg.deps.php b/languages/LanguageZh_sg.deps.php new file mode 100644 index 0000000000..4da7862612 --- /dev/null +++ b/languages/LanguageZh_sg.deps.php @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/languages/LanguageZh_tw.deps.php b/languages/LanguageZh_tw.deps.php new file mode 100644 index 0000000000..a793784beb --- /dev/null +++ b/languages/LanguageZh_tw.deps.php @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/skins/Chick.deps.php b/skins/Chick.deps.php new file mode 100644 index 0000000000..65f3a1f8f6 --- /dev/null +++ b/skins/Chick.deps.php @@ -0,0 +1,9 @@ + \ No newline at end of file diff --git a/skins/MonoBook.deps.php b/skins/MonoBook.deps.php new file mode 100644 index 0000000000..0efe1213b4 --- /dev/null +++ b/skins/MonoBook.deps.php @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/skins/MySkin.deps.php b/skins/MySkin.deps.php new file mode 100644 index 0000000000..b46c902b4b --- /dev/null +++ b/skins/MySkin.deps.php @@ -0,0 +1,9 @@ + \ No newline at end of file diff --git a/skins/Simple.deps.php b/skins/Simple.deps.php new file mode 100644 index 0000000000..71a411d906 --- /dev/null +++ b/skins/Simple.deps.php @@ -0,0 +1,9 @@ + \ No newline at end of file