修改MediaWiki的PHP程序
--James Qi 2009年12月29日 (二) 09:52 (CST)
前天晚上将一部分实用查询网站调用Google AdManager代码的模板进行了修改,因为该模板被数十万个页面调用,所以影响很大,后期需要好些天的时间来更新链接、重新生成缓存文件。更新时间长还没多大关系,怕的是那种页面数量多、访问量大而调用模板功能又负载的网站,查号吧网站当天晚上就让Linux服务器负载超过100以上,昨天白天又成了只能让这个网站开开停停的情况,让该网站以及所在服务器上的其它网站都受了不少影响。
和同事商量了用负载均衡等方式,不好马上实现,而且两、三台服务器的负载均衡似乎也不能解决问题,想来想去只有设法在程序中修改,来让访问者暂时读取以前的文件缓存而不去进行实时更新,以前出现这个问题的时候也这样想过,但在MediaWiki的程序中找了半天也无法明白应该如何改。昨天晚上反复查找、调试,到了零点左右才算是找到HTMLFileCache.php中的一个位置可以现实这样的想法,也才能安心睡个觉。
我们使用MediaWiki平台来建网站已经有4年时间了,在国内估计少有比我们更了解这个系统的了,在使用的过程中刚开始就是用的基本功能,后来需要实现一些特殊的效果就安装过一些MediaWiki的配套扩展程序以及嵌入一些HTML代码来实现。但有的时候遇到一些问题,必须要修改MediaWiki的程序才能实现,我不懂PHP编程,公司也没有PHP程序员,偶尔找外面的朋友帮忙咨询一下,但也不好麻烦别人来修改程序。好在MediaWiki这样的开放源代码系统所有程序都是公开的、免费的,也有一些人讨论,所以我也摸索着修改过几个地方,下面列出来:
目录
基本设置
LocalSettings.php
这是必须进行修改的文件,网站的基本设置(例如网站名称、数据库连接、语言编码、是否允许上传等)都在里面,还可以加入更多的设置(例如用户权限、缓存机制、上传允许文件类型、调用扩展等),因为我们有多个Wiki网站,所以还统一调用了一个CommonSettings.php子程序。
MonoBook.php
这个也算是基本需要修改的文件,是默认的皮肤文件,我们在里面添加了调用Google API、Google AdManager、Google Analytics的代码。
Common.js, Common.css, Monobook.js, Monobook.css
这些有点特殊,不是在服务器的目录下找文件来修改,而是存放在数据库中,通过这些页面进行修改:MediaWiki:Common.js, MediaWiki:Common.css, MediaWiki:Monobook.js, MediaWiki:Monobook.css,用于界面和部分扩展。
includes修改
Linker.php
MediaWiki 1.10.0 中要想让外部链接和站间链接在浏览器中打开新页面,就只有修改/includes/Linker.php这个文件,而MediaWiki 1.15.0 中可以有其它设置办法。
ImagePage.php
想对Image页面的界面进行一些修改的话,可以找到/includes/ImagePage.php进行。
HTMLFileCache.php
网站语言设置为zh的默认情况下,zh-tw等都是不生产File Cache的,可以通过修改/includes/HTMLFileCache.php中的语言判断来让系统照样生成File Cache,另外就是这次上面说的临时让浏览者访问老文件缓存而不马上进行更新。
maintenance修改
runJobs.php
/maintenance/runJobs.php默认一次只能运行最多10000个Jobs,如果网站数据量大,需要修改这个值。
generateSitemap.php
/maintenance/generateSitemap.php可以修改其中的网站URL,以便生成Sitemap后不需要进行修改,好像也可以通过在LocalSettings.php中设置而不需修改这个文件。
rebuildFileCache.php
/maintenance/rebuildFileCache.php可以修改其中的网站URL,以便生成File Cache中是正确的网址,好像也可以通过在LocalSettings.php中设置而不需修改这个文件。
扩展修改
有的时候还需要对扩展程序也进行类似的小修改,一般可以归于扩展程序的安装中。
以上这些东西能少修改的就尽量少修改,一旦MediaWiki版本升级后,要记得都要进行检查、更新。不过如果有PHP程序员的话,就可以对MediaWiki进行大手术,在基本构架不变的情况下改得面目全非、功能上更贴近需要,例如国外的Mahalo、WikiHow等网站,除了改动程序以外,还可以做出专门的扩展程序。
标签:MediaWiki、PHP、程序。 |
相关内容:
|