论坛风格切换
  • 3271阅读
  • 0回复

[升级方案][厦门小鱼测试升级脚本]shell驱动php跑大数据量的单步升级 [复制链接]

上一主题 下一主题
离线rickyleo
 

发帖
315
金币
0
威望
99
只看楼主 倒序阅读 使用道具 楼主  发表于: 2011-11-01
当某些表数据量超大的情况下,用web请求来跑php很可能会超时.用shell就不会.
下面是我在厦门小鱼网在测试升级的时候写的一个shell来驱动php来跑升级程序的一个step.可以使用其他的step 改下就好
.sh脚本的文件代码如下:
  1. #!/bin/sh
  2. #增量开始mid
  3. START=14503407;
  4. #增量前开始mid
  5. #START=0;
  6. #pw_msg最大mid
  7. MAXMID=15803407;
  8. #增量前最大mid
  9. #MAXMID=14503407;
  10. #批量执行条数
  11. RECORD=10000;
  12. PERCOUNT=10000;
  13. #转换程序step值
  14. STEP=30;
  15. if [ $START -eq 0 ];then
  16.     #同步系统网络时间
  17.     ntpdate 210.72.145.44;
  18. fi
  19. while [ $START -le $MAXMID ]
  20. do
  21. END=`expr $START + $RECORD`;
  22. if [ $END -ge $MAXMID ]; then
  23.     END=$MAXMID;
  24.     RECORD=`expr $END - $START`;
  25. fi
  26. echo "起始mid:"$START"  截止mid:"$END"  当前时间: "`date +%Y-%m-%d/%H:%M:%S`;
  27. #执行升级程序
  28. /usr/local/php/bin/php -e /home/wwwroot/pw/pw75/up75to85_msg.php $STEP $START $RECORD
  29. START=`expr $START + $PERCOUNT`;
  30. done
  31. echo "短消息数据升级完成,当前时间: "`date +%Y-%m-%d/%H:%M:%S`;
然后升级程序脚本 需要改一下:
找到:
  1. foreach ($defined_vars as $_key => $_value) {
  2.     if (!in_array($_key,array('GLOBALS','_POST','_GET','_COOKIE','_SERVER'))) {
  3.         ${$_key} = '';
  4.         unset(${$_key});
  5.     }
  6. }
下下下方添加如下代码:
  1. //up75to85_msg.sh部分 by rickyleo
  2. $step = $GLOBALS['_SERVER']['argv']['1'];
  3. $start = $GLOBALS['_SERVER']['argv']['2'];
  4. $record = $GLOBALS['_SERVER']['argv']['3'];
  5. //sh end
然后找到:
  1. InitGP(array('step','start'));
注释掉.
升级脚本可以重命名一个,将原先的升级脚本的这一步骤直接跳过。然后这步单独拿出来跑,最后会有这么三个文件:
up75to85.php    up75to85_msg.php    up75to85_msg.sh
up75to85.php:修改就是将step=30的那步直接跳过
up75to85_msg.php:由up75to85_msg.sh来调用,在up75to85_msg.sh控制好start和end的区间值
上面加入了系统时间的更新和每次跳转结束时的时间,这样php就不会超时 跳转的时间也省了.这个拿来改下可以试用转换程序的一些需要增量转换的表 而且可以同时进行跑 挑战php和mysql的性能极限。最好是独立的服务器 可以将php和mysql的配置改的高一点比如:
php的memory_limit改的高一点,mysql的max_allowed_packet改的大一点,key_buffer_size和其他的buffersize改的高一点

升级另外整理了一份up75to85.sql的命令行文件用来改表结构和索引 也是可以大大提高大站升级速度的.
最后附上整理好的脚本文件 75to85的版本
执行顺序:
1、up75to85.sql(mysql -uroot -ppassword --default-character-set=gbk 目标数据库 < 路径/up75to85.sql)
2、up75to85.php(web执行,注意要覆盖下升级包的lang和lib文件夹,lang下面还有自己的php脚本要跑,上次华商网就是因为没跑吃了一次亏)
3、up75to85_msg.sh (驱动up75to85_msg.php)






附件: 厦门小鱼升级脚本(up75to85).zip (107 K) 下载次数:76
本帖提到的人: @太史慈 @top @师师 @prisk
快速回复
限100 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
 
提到某人:
选择好友
上一个 下一个