为memcached创建启动脚本

作者:pakey 发布时间:April 14, 2012 分类:Linux

memcached是个好东西,自从用了之后欲罢不能,干什么都想memcache一下。

之前的开发环境是win7下装个wampserver,虽说版本和生产环境差不多,但是win和linux的差距是个不可逾越的鸿沟,最近开始了使用虚拟机装个ltmp的实际环境来进行开发,尽量达到一次完成,不需要将来在进行调整。

环境安装很好说,网上教程一大堆,只是在安装完memcached的时候出现了问题

无法使用service启动,甚至于连/etc/init.d/下的启动脚本都没有,这让我百思不得其解,无奈只有自己创建memcached的启动脚本了

空间转移完毕,恢复访问!

作者:pakey 发布时间:April 6, 2012 分类:Other

学了一段时间linux,感觉成熟了,于是把这个博客从win上面转到了这个linuxvps上面

用的yardvps的 感觉还可以 比较稳定

vm虚拟机中centos关闭桌面服务后无法联网的解决

作者:pakey 发布时间:April 6, 2012 分类:Linux

vmware真费资源,为了减轻一下资源占用,于是决定关闭centos的桌面服务


vi /etc/inittab  

修改为3即可,然后reboot重启,即可进入不带桌面服务的centos

但是进去之后,发现无法联网。

通过ifconfig发现原来是没有配置


vi /etc/sysconfig/network-script/ifcfg-eth0

 


BOOTPROTO=dhcp
GATEWAY=192.168.79.2
NETMASK=255.255.255.0
ONBOOT=yes

然后重启network服务即可,当前这里面需要根据你的情况进行配置


service network restart

THINKPHP SQL解析缓存bug的研究及修复

作者:pakey 发布时间:April 2, 2012 分类:Thinkphp

BUG形式:
我缓存默认方式为memcache ,然后开启了sql解析缓存。
这样日志一直报连接错误。错误如下


[ 2012-04-02T09:24:37+08:00 ] /index.php | NOTIC: [8] Undefined index: persistent CacheMemcache.class.php 第 43 行. 
[ 2012-04-02T09:24:37+08:00 ] /index.php | NOTIC: [8] Undefined index: timeout CacheMemcache.class.php 第 45 行. 
[ 2012-04-02T09:24:37+08:00 ] /index.php | NOTIC: [8] Undefined index: host CacheMemcache.class.php 第 47 行. 
[ 2012-04-02T09:24:37+08:00 ] /index.php | NOTIC: [8] Undefined index: port CacheMemcache.class.php 第 47 行. 
[ 2012-04-02T09:24:37+08:00 ] /index.php | NOTIC: [8] Undefined index: timeout CacheMemcache.class.php 第 47 行. 
[ 2012-04-02T09:24:37+08:00 ] /index.php | NOTIC: [8] Memcache::connect() [memcache.connect]: Server (tcp 0) failed with: Failed to parse address "" (0) CacheMemcache.class.php 第 47 行. 
[ 2012-04-02T09:24:37+08:00 ] /index.php | NOTIC: [2] Memcache::connect() [memcache.connect]: Can't connect to :0, Failed to parse address "" (0) CacheMemcache.class.php 第 47 行. 
[ 2012-04-02T09:24:37+08:00 ] /index.php | NOTIC: [2] Memcache::set() [memcache.set]: No servers added to memcache connection CacheMemcache.class.php 第 97 行. 
[ 2012-04-02T09:24:37+08:00 ] /index.php | NOTIC: [2] Memcache::set() [memcache.set]: No servers added to memcache connection CacheMemcache.class.php 第 97 行. 
[ 2012-04-02T09:24:37+08:00 ] /index.php | NOTIC: [2] Memcache::set() [memcache.set]: No servers added to memcache connection CacheMemcache.class.php 第 97 行. 
[ 2012-04-02T09:24:37+08:00 ] /index.php | NOTIC: [2] Memcache::set() [memcache.set]: No servers added to memcache connection CacheMemcache.class.php 第 97 行.


而不开启sql解析缓存则无错。

memcache中set和replace方法的区别

作者:pakey 发布时间:March 30, 2012 分类:PHP

在memcache中replace和set在一定程度上作用是一致的,都是改变某个元素的值,但是之间略有不同。

我们来用例子说明


$mem=new Memcache;
$mem->connect("localhost", 11211);
//直接set
$mem->set("mystr1", "this is a memcache test1!<br>", MEMCACHE_COMPRESSED, 3600);
echo $str=$mem->get("mystr1");
//直接replace
$mem->replace("mystr2", "this is a memcache test2!<br>", MEMCACHE_COMPRESSED, 3600);
var_dump($str=$mem->get("mystr2"));
//先add在replace
$mem->add("mystr3", "this is a memcache test3!<br>", MEMCACHE_COMPRESSED, 3600);
echo $str=$mem->get("mystr3");
$mem->replace("mystr3", "this is a memcache test31!<br>", MEMCACHE_COMPRESSED, 3600);
echo $str=$mem->get("mystr31");
//先add在set
$mem->add("mystr4", "this is a memcache test4!<br>", MEMCACHE_COMPRESSED, 3600);
echo $str=$mem->get("mystr4");
$mem->replace("mystr4", "this is a memcache test41!<br>", MEMCACHE_COMPRESSED, 3600);
echo $str=$mem->get("mystr41");

运行结果这里我们就不写出了,个人强烈建议你运行一下,这样可以加深印象!

最终的结论就是在对已有值的元素处理上两者是相同的,但是对于一个不存在的元素,set的作用就和add相当,replace则是只能对已经存在的元素进行处理

开始使用< !DOCTYPE HTML >吧

作者:pakey 发布时间:March 29, 2012 分类:WebDesign

不管是刚接触前端,还是你已经“精通”web前端开发的内容,你应该知道在你写html的时候需要定义文档类型;你知道如果没有它,浏览器在渲染页面的时候会使用怪异模式;你知道各个浏览器在怪异模式下对各个元素渲染是有差异的。所以你会写像这样的doctype:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

好在现在的各种web开发工具都足够强大,支持插入模板代码,因此你并不需要把这又长又臭的doctype一个个字母的敲出来。但是如果你受够了它,你也许可以尝试下面这个写法:

Tp中如何自定义默认模版目录?

作者:pakey 发布时间:March 25, 2012 分类:Thinkphp

今天在论坛中看到了这个问题,当时随手回复了个“配置DEFAULT_THEME”,后来想想觉得不对,于是自己研究一下,发现当初的回答确实是错误的,DEFAULT_THEME是指的修改默认模板,而不是模版目录,主要用于多模版支持。而默认模板目录如何修改呢?Tpl这个。

我们可以打开Common/runtime.php文件,看到如下一行代码


defined('TMPL_PATH') or define('TMPL_PATH',APP_PATH.'Tpl/'); // 项目模板目录
defined('HTML_PATH') or define('HTML_PATH',APP_PATH.'Html/'); // 项目静态目录

我想这样大家就知道了吧?

在模版入口定义TMPL_PATH常量即可

类的连贯操作的实现办法

作者:pakey 发布时间:March 24, 2012 分类:PHP

在有的代码中我们看到


$User->where('status=1')->order('create_time')->limit(10)->select(); 
$User->order('create_time')->where('status=1')->limit(10)->select(); 

是不是觉得很帅呢?

今天小研究了一下 终于知道了如何写一个这样子的类

直接上例子


class test{
var $aaa='1';
	function a(){
		echo 'aaaaaaaaaa<br>';
		return $this;
	}
	
	function b(){
		echo 'bbbbbbbbbb<br>';
		return $this;
	}
	public function c(){
		echo 'ccccccccc<br>';
		return $this;
	}
}
$t=new test();
$t->a()->b()->c();

如何看明白了么?关键就是return $this;这个啊

这样return以后


 $t->a()->b()->c();

就和 

$t->a();

$t->b();

$t->c();

 是一个效果,就是连着写连贯一些,达到了这样的书写方式