BO-BLOG较为完整版镜像HACK

| |
| 不指定 February 18, 2007 @ 11:47, Robin Hoo
自己的双站点镜像解决方案,和大家分享一下。跟之前发布在Bo-Blog 安装使用里的有改进。Hack的原理是,修改DB.php中的db_query()函数,检测那些修改数据库内容的sql语句,将该sql保存在temp文件下,并调用镜像站点的相应同步函数,将该sql语句在镜像站点的mysql中运行,然后再在本地数据库中运行。关于文件同步方面,只是局限于bo-blog相关的文件,如data/plugin/temp下的文件,我们也可以称其为bo-blog系统文件。原理是修改global.php中的writetofile()函数,工作机制类似于数据库同步,将要写的文件内容,先写入temp下的某个文件中,并调用镜像站点同步函数,将文件内容写入相应的文件中,然后在写入本地文件。打破同步的方法也很简单,只要将同步函数的文件名改掉就可以了,比如将mirror.php改成mirror.php.bak,相应的同步链就会被打破。同步函数文件mirror.php存放的位置应为blog的安装目录。$config['mirror']的值是镜像站点blog的安装目录。
改进历程:
1、增加系统文件同步
2、在传递同步函数时增加安全性,并加入$config['mirror']的系统参数
3、增加失败重试,防止频繁出现同步出错信息。[最新改进]
下面是hack部分代码。建议不是很熟悉php的,或没有UE或其他专业文本修改工具的人不要尝试!
db.php中db_query()的修改


global.php中writetofile()的修改


同步函数mirror.php源码

最后编辑: Robin Hoo 编辑于2008/05/29 09:18

文章来自: 本站原创
Tags: , ,
9 comment(s)
BIRD
2007/07/29 18:11
Mirror File Error[data/online.php]:OK

2个主机都出现这个提示。。。。不知道哪里出问题了

希望ROBIN兄能帮偶分析一下。。。
KingShui
2007/04/15 17:43
你好..
我的出现了..
Parse error: parse error, unexpected T_VARIABLE in D:APMServwwwhtdocsglobal.php on line 264
这个是怎么回事呀??

第264行是:

function writetofile ($filename, $data) { //File Writing
//#--Mirror Function Begin--#
global $config;
$pack_file=$filename;
$mirrorfile=explode(\"/\",trim($pack_file));
if (strpos(\'data plugin bak temp\',$mirrorfile[0])!==false)
{
$file_sess=\"temp/file_\".md5($data).\".txt\";
$handler=@fopen($file_sess,\"w\");
fputs($handler,$data);
fclose($handler);
chmod($file_sess,0644);
$pack_file_sess=rawurlencode(\"/\".$file_sess);
$pack_filename=rawurlencode($filename);
$mirror_host=$config[\'mirror\'];
$err_count=0;
while ($err_count<10)


里的
global $config;
这个问题一般出现在,前面的文件有地方出现语法错误,仔细检查一下;或者因为你没有用支持utf-8文本编辑器修改了文件。建议将文件开始出的中文注释全部删除,可避免第二种问题
Robin Hoo 回复于 2007/04/23 16:04
庄柯
2007/03/22 22:21
如何打破站点之间,风格以及一些设置的同步问题?
将mirror.php文件名改一下或者删除就可以了
Robin Hoo 回复于 2007/03/23 09:36
庄柯 Homepage
2007/03/22 22:19
请教一个问题,两个站点的设置同步好象也进行,如何打破?
如果设置也在同步的话,那备案号等等就有点问题...
kasindy
2007/03/14 07:47
一个错误是
Mirror File Error[data/online.php]:ERROR DATA OPEN[/temp/file_3b8365630f171dfc7b61aa90d86f508f.txt:data/online.php]

另一个错误是:
Mirror File Error[data/online.php]:

请问是怎么回事
检查一下,你data目录下的文件是否都是666。另外再仔细检查一遍$config['mirror']是否正确或存在
Robin Hoo 回复于 2007/03/14 09:55
tsian Homepage
2007/03/13 12:28
Bo-Blog Database System Tips: Mirror MySQL Query Error[ERROR DATA OPEN[]]{http://www.fallgingko.com/ps/mirror.php?db=%2Ftemp%2Fsql_6bba8279fa11f9202ae3bc2b9fbc10ee.txt}

Time: 2007-3-13 3:23pm
Script:

SQL: UPDATE `***counter` SET `today`=177+1
Error:
Errno.: 0
你先断开镜像,看两边是否能正常操作?
Robin Hoo 回复于 2007/03/14 09:23
tsian Homepage
2007/03/13 12:27
$config['mirror']='http://www.fallgingko.com/ps';

从结果上判断,很显然已经输入了。

temp也是777。
站点间互访有问题?
tsian Homepage
2007/03/13 11:25
镜像,一个成功,一个出现如下错误.为什么?

Bo-Blog Database System Tips: Mirror MySQL Query Error[ERROR DATA OPEN[]]{http://www.fallgingko.com/ps/mirror.php?db=%2Ftemp%2Fsql_ae7c965f89c26fc916d4654b30b98ba8.txt}
有两种可能,一个可能是你的temp目录的属性是不是777,第二个可能是你的站点间互访有问题。对了你的config.php有没有设置$config['mirror']?
Robin Hoo 回复于 2007/03/13 12:08
tsian Homepage
2007/03/12 23:30
请问能不能写明哪几个函数需要改为自己的参数?
不如说镜像的url什么的。
分页: 1/1 第一页 1 最后页
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
昵称   密码   游客无需密码
网址   电邮   [注册]
               

验证码 不区分大小写