用php进行svn更新代码,支持断点续传0+

14,945 views / 2009.11.21 / 5:05 下午

本空间用的虚拟主机特别恶心,ftp不好用,又不支持ssh, php的安全级别又设置的比较高,导致杜工每次更新代码都特别费劲。琢磨了半天,想出了一个办法,就是直接从svn下载代码到服务器,这样就可以更新wordpress了。

<?php
@set_time_limit(0);
// $svnurl = "http://core.svn.wordpress.org/trunk/";
$svnurl = "http://svn.automattic.com/wordpress/trunk/";
 
$nowversion = file_get_contents("version.txt");
$basedir = "../71j/";
$c = preg_replace("[\r\n]", "", file_get_contents($svnurl));
$v = preg_match("/Revision\s*([0-9]+)/", $c, $m);
if ($m[1] <= $nowversion) {
 echo "You have the latest version!";
} else {
 getdir();
}
file_put_contents("version.txt", $m[1]);
 
function getdir($pos = "") {
 global $svnurl, $basedir;
 $log = explode("\n", file_get_contents("log.txt"));
 array_pop($log);
 $c = file_get_contents($svnurl . $pos);
 preg_match_all("/<li><a\s+href=\".+?\">(.+?)<\/a><\/li>/i", $c, $m);
 
 foreach($m[1] as $n) {
  if ($n == "..") continue;
  if (strpos($n, ".") !== false) {
   if (!in_array($basedir . $pos . $n, $log) || end($log) == $basedir . $pos . $n) {
    !file_exists($basedir . $pos) && mkdir($basedir . $pos, 0777, true);
    file_put_contents($basedir . $pos . $n, file_get_contents($svnurl . $pos . $n));
    file_put_contents("log.txt", $basedir . $pos . $n . "\n", FILE_APPEND);
   }
  } else {
   getdir($pos . $n);
  }
 }
}
 
>

使用前要在本文件目录下放一个version.txt,记录svn版本号,同时要清空log.txt,因为这个记录断点续用的。

代码比较简陋,可以根据自己需要加以改进。

Categories: 感悟 Tags: ,

让php读取文件不在受内存限制0+

14,364 views / 2009.11.11 / 6:06 下午

php.ini里面的学问不少,我们在部署程序的时候最常修改的就是它了。这里介绍一个小小的技巧,可以让php打开文件的时候不再收内存限制(memory_limit)。

我们知道,要设置程序执行时间不受限制,只需要让max_execution_time = 0即可,是不是设置memory_limit = 0就能达到目的了呢?答案是否定的,正解如下:

memory_limit = -1

呵呵,有意思吗,朋友说这两个模块不是一个人写的,所以设置的值不一样(囧)。

Categories: 感悟 Tags: ,

编写IE8加速器时遇到的问题2+

13,381 views / 2009.10.27 / 5:05 下午

在IE8beta版本刚发布的时候,曾经按照文档写过一个分页页面图片并提取到服务器的程序。完成后发现简单的选择页面信息可以成功,但是选择较为复杂的元素,然后选择加速器后,服务器那边会只显示一个”#”,很是诡异。把服务端的文件清空后,也会出现这个问题。

到目前我尚没有发现问题的原因,暂时归结为IE8的一个BUG吧。

Categories: 感悟 Tags:

IE8的兼容性视图并不是万能的0+

7,691 views / 2009.09.15 / 4:04 下午

今天在调页面的时候,发现一个onmouseout属性总是被IE8判断出错,本来鼠标还没移动出那个元素,但事件却已经响应了。测试ff和ie6 ie7 都没有问题。
几经周折,才发现是ie8的兼容性视图设置了兼容所有的网站,取消后,问题得到解决。这可能是该功能的一个bug吧, 有待继续观察。

Categories: 感悟 Tags: ,

恢复mysql的root密码0+

4,467 views / 2009.09.08 / 5:05 下午

如果给你一台服务器,mysql环境都配置好了,却不知道root密码,怎么办?难道要重新安装mysql? 呵呵,我还真干过这事,后来受前辈教化,得出下面的密码恢复方法,整个过程不超过2分钟。

首先向mysqld server 发送kill命令关掉mysqld server(不要用kill -9),存放进程ID的文件通常在MYSQL的数据库所在的目录/var/lib/mysql中,也可以用ps查看。

# killall -TERM mysqld

然后使用–skip-grant-tables参数来启动 mysqld。

# /usr/bin/safe_mysqld --skip-grant-tables

路径可以用locate找一下。

然后就可以无密码登录到mysqld server ,此时Mysql的密码和刚安装时一样,都是为空。现在我们可以使用mysqladmin来改变mysql的密码了。

#mysqladmin -u root -p password newpassword

最后记得要刷新权限表:

# mysqladmin flush-privileges
Categories: 感悟 Tags: