- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- :CodeReading/MediaWiki/1.10 へ行く。
- 1 (2007-12-30 (日) 02:57:46)
- 2 (2008-02-11 (月) 15:28:58)
- 3 (2008-02-19 (火) 16:35:17)
- 4 (2008-02-19 (火) 16:56:31)
- 5 (2008-02-19 (火) 17:06:46)
- 6 (2008-02-19 (火) 17:19:05)
- 7 (2008-02-19 (火) 17:34:14)
- 8 (2008-02-19 (火) 17:54:03)
- 9 (2008-02-19 (火) 18:53:00)
- 10 (2008-02-19 (火) 18:57:16)
- 11 (2008-02-19 (火) 23:20:24)
- 12 (2008-02-20 (水) 00:42:57)
- 13 (2008-02-20 (水) 00:50:27)
- 14 (2008-02-20 (水) 01:04:14)
- 15 (2008-02-20 (水) 01:10:07)
- 16 (2008-02-20 (水) 11:21:37)
- 17 (2008-02-20 (水) 12:06:01)
- 18 (2008-02-25 (月) 00:41:15)
- 19 (2008-02-25 (月) 00:44:06)
- 20 (2008-02-27 (水) 03:20:01)
- 21 (2008-02-27 (水) 04:43:43)
- 22 (2008-02-27 (水) 04:50:42)
- 23 (2008-02-27 (水) 05:02:39)
- 24 (2008-02-27 (水) 05:05:49)
- 25 (2008-02-27 (水) 05:26:52)
- 26 (2008-02-27 (水) 05:38:59)
- 27 (2008-02-27 (水) 20:41:53)
- 28 (2008-02-28 (木) 00:48:05)
- 29 (2008-02-28 (木) 00:57:57)
- 30 (2008-02-28 (木) 01:03:58)
- 31 (2008-02-28 (木) 01:26:17)
- 32 (2008-02-28 (木) 18:39:01)
- 33 (2008-02-28 (木) 18:53:23)
- 34 (2008-03-11 (火) 04:20:02)
- 35 (2008-11-22 (土) 15:41:13)
- 36 (2008-11-22 (土) 15:51:05)
- 37 (2008-12-07 (日) 17:56:00)
- 38 (2009-01-18 (日) 21:23:00)
- 39 (2009-03-04 (水) 23:43:45)
- 40 (2009-03-14 (土) 15:25:16)
- 41 (2009-08-26 (水) 22:57:32)
- 42 (2009-08-26 (水) 23:08:03)
- 43 (2009-08-30 (日) 11:15:27)
- 44 (2009-09-07 (月) 22:24:14)
- 45 (2009-11-07 (土) 01:15:53)
- 46 (2009-12-12 (土) 13:27:19)
- 47 (2011-12-14 (水) 01:29:17)
- 48 (2013-03-20 (水) 22:31:00)
- 49 (2014-01-23 (木) 02:57:35)
目次 † 
関連 † 
参考 † 
- design.txt
- http://svn.wikimedia.org/viewvc/mediawiki/trunk/phase3/docs/design.txt?view=markup
- Development/ja - MediaWiki
- http://www.mediawiki.org/wiki/Development/ja
- Manual:Database layout - MediaWiki
- http://www.mediawiki.org/wiki/Manual:Database_layout
- Manual:Contents/ja - MediaWiki
- http://www.mediawiki.org/wiki/Manual:Contents/ja
- MediaWiki Documentation
- http://svn.wikimedia.org/doc/
- The MediaWiki codebase
- http://www.mediawiki.org/wiki/How_to_become_a_MediaWiki_hacker#The_MediaWiki_codebase
MediaWiki/1.10 † 
MediaWiki 1.10の解析。
MediaWikiの主要部分を調べた結果。
主処理への入り口 † 
- index.phpがエントリーポイント。
- initialize直後にCleanup。主処理はどこか?
- なぜかMediaWiki::initializeの中に主処理がある。
index.php -> MediaWiki::initialize -> MediaWiki::performAction -> (リクエストの'action'次第で分岐、それぞれの処理へ)
MediaWikiひとめぐり † 
起動から終了までの主な処理を処理順に記す。
MediaWiki::performActionが処理の中心。
ここで何をするかはMediaWikiの外から与えられるリクエスト次第。
- index.php
- includes/Wiki.php(41)
MediaWiki::initialize - includes/Wiki.php(365)
MediaWiki::performAction
※クエリー'action'次第でいろいろ処理。またはOutputPage::redirectを呼び出して、あとでリダイレクトすることにする(実際は後のOutputPage::outputで行なう)。 - includes/Wiki.php(289)
MediaWiki::finalCleanup - includes/Wiki.php(305)
MediaWiki::doUpdates
$wgDeferredUpdateListに溜め込んだオブジェクト全て->doUpdates
こうして処理タイミングを遅らせているのは、処理間の依存関係を解決するため? - includes/OutputPage.php(553)
OutputPage::output
※スキン適用、HTTPヘッダー・HTMLヘッダー生成、レスポンス出力
action † 
actionはほとんどMediaWiki(includes/Wiki.php)とArticle(includes/Article.php)で処理される。
それ以外には3つ程度のクラスしか関与しない。
処理の中心になっているのはこれらの数少ないクラスらしい。
'view'というactionは複数のクラスを通して処理される。
'view'はactionのデフォルト値。
MediaWiki[?]が処理する'action' † 
- dublincore
- creativecommons
- credits
Article[?]が処理する'action' † 
- view *
- watch
- unwatch
- delete
- revert
- rollback
- protect
- unprotect
- info
- markpatrolled
- render
- deletetrackback
- purge
その他の'action'一覧 † 
- submit *(editを含む)
- edit *
- history *
- raw ?
action 'view' † 
'view'
actionのデフォルト。
Articleが処理する。
クエリーで指示されたページを表示する。
関連するクエリー † 
- diff
差分表示するか否か。差分表示は独立したactionではなく、action 'view'の一部になっている。 - rcid
RecentChange(最近更新されたページ)?
巡回にのみ関連。 - rdfrom
外部からのリダイレクトに関連。 - diffonly(利用者の設定と関連)
- oldid
履歴(特定版)ID - direction
履歴と関連。値は'next'または'prev'のどちらかになる。
表示する履歴に関連。
やってること † 
スキン参照。
プロセス名変更。
名前空間取得。
クエリーからOldIDを得て、不正なものならリダイレクト。
OldID…履歴のID、Wikipediaでの「特定版」?
ArticleFlagをtrueに。
検索エンジンのロボット向けヘッダーの用意。
'diff'やOldIDを与えられたら差分ページを用意。
差分はDifferenceEngine[?]に任せる。
でも最新版を表示することもある。
$this->mIsRedirect でなく、OldIDも与えられていなければ…$this->viewUpdates()
HTTPヘッダーにETagも設定。
wfDebug( 'Article::view using parser cache: ' . ($pcache ? 'yes' : 'no' ) . "\n" ); if ( $wgUser->getOption( 'stubthreshold' ) ) { wfIncrStats( 'pcache_miss_stub' ); }
リダイレクトページではなくrdfromがあれば…
外部からのリダイレクト。
履歴。
ページに追加。
<pre>…</pre>追加。
<span class="redirectText">…</span>追加。
MediaWikiでのページキャッシュ。
履歴ではページキャッシュを無効に。
ページタイトル取得。
名無しさん用会話ページの場合の追加分。
巡回機能のためのUI追加。
<div class='patrollink'>…</div>追加。
トラックバック表示の追加。
ページ出力。
action 'edit' † 
EditPage[?]またはExternalEdit[?]が処理する。
イベント'CustomEditor'実行。正しく実行できたことが前提条件。
なぜ前提か?
ExternalEditは「編集に外部アプリケーションを使う」[?]のレスポンスを返す(.ini形式で編集するページ名などを返す)だけ。
この仕組みはMediaWikiの範疇ではなく、ee.plによって実現されている。