月归档:2011 年九月

Tokyo Tyrant

网上的一些资料的整理:   TTserver参数设置详解:http://blog.163.com/chenxiaodong_2009/blog/static/129082330201022481421504/ 利用Tokyo Tyrant构建兼容Memcached协议、支持故障转移、高并发的分布式key-value持久存储系统:http://blog.s135.com/post/362/   ln -s /usr/local/tokyocabinet-1.4.47/lib/libtokyocabinet.so.9 /usr/local/lib/libtokyocabinet.so.9 tokyotyrant优点:1.用Tokyo Cabinet读写速度非常快,是Berkeley DB 等 DBM 的几倍。2.故障转移 (双机互为主辅模式)3.日志文件体积小4.任何Memcached客户端均可直接调用tokyotyrant。还可以通过HTTP方式调用 curl -X PUT http://192.168.0.249:1978/key -d "value"curl http://192.168.0.249:1978/keycurl -X DELETE http://192.168.0.249:1978/key 缺点:1.存进去的数据不到满了不会过期 2.当我们从中取数据时,会是一个序列化的字符串,没有自动反序列化处理3.32位操作系统 Tokyo Cabinet 数据库单个文件不能超过2G 启动:ttserver -host 192.168.0.249 -port 1978 -thnum 8 -dmn … 继续阅读

发表在 服务器端 | 标签为 , , | 留下评论

php获取memcache内所有键值对

网上看了一个,可以取到所有key值。但是发现php手册里写的稍微有点不一样。 php手册 Memcache::getExtendedStats Note: 这个函数在Memcache2.0.0版本加入。 Note: (译注)获取Memcache内所有数据方法:首先使用getExtendedStats(‘slabs’)获取到每个服务器上活动slabs分块的id, 然后 使用getExtendedStats(‘cachedump’, $slabid, $limit)来获取每个slab里面缓存的项,其中$slabid是slab分块id, $limit指 期望获取其中的多少条记录。 整合了一下: function show($host,$port){    $memcache_obj = new Memcache();    $memcache_obj->addServer($host, $port);    //echo $memcache_obj->getversion();    $memcache_obj->set(‘xx’,’xx’);   $memcache_obj->set(‘yy’,’yy’);   $memcache_obj->set(‘zz’,’zz’);       //方式一 网上的    $result = $memcache_obj->getExtendedStats(‘items’);    $items=$result["$host:$port"]['items'];        //方式二 php手册说的   //$result = $memcache_obj->getExtendedStats(‘slabs’);    //$items = … 继续阅读

发表在 Php | 标签为 , , | 留下评论

memcacheq

详情见:http://memcachedb.org/memcacheq/ 基于memcache的一个队列服务,也就是相同的key值设置多个值就形成了一个队列,先进先出。出了就取不到了。 php程序存取跟memcache 一样。 linux安装脚本: #!/bin/bashcd /usr/local/src/LNMP/memcacheqtar xzf db-5.2.28.tar.gz cd db-5.2.28cd build_unix/../dist/configuremakemake installcd /usr/local/src/LNMP/memcacheqtar xzf libevent-1.4.14b-stable.tar.gzcd libevent-1.4.14b-stable./configuremakemake installecho "/usr/local/BerkeleyDB.5.2/lib" >>/etc/ld.so.confldconfigcd /usr/local/src/LNMP/memcacheqtar xvzf memcacheq-0.2.0.tar.gzcd memcacheq-0.2.0sed -i ‘s/BerkeleyDB.4.7/BerkeleyDB.5.2/g’ configure //好像是它的configure脚本里写死了berkeleydb的版本。。。./configure –enable-threadsmakemake installmkdir /data/memcacheqmemcacheq -d -r -H /data/memcacheq -N -R  -L 1024 -B … 继续阅读

发表在 服务器端 | 标签为 , , , , , | 留下评论

【转】linux下的/dev/shm/

/dev/shm/是linux下一个非常有用的目录,因为这个目录不在硬盘上,而是在内存里。因此在linux下,就不需要大费周折去建ramdisk,直接使用/dev/shm/就可达到很好的优化效果。 /dev /shm/需要注意的一个是容量问题,在linux下,它默认最大为内存的一半大小,使用df -h命令可以看到。但它并不会真正的占用这块内存,如果/dev/shm/下没有任何文件,它占用的内存实际上就是0字节;如果它最大为1G,里头放有 100M文件,那剩余的900M仍然可为其它应用程序所使用,但它所占用的100M内存,是绝不会被系统回收重新划分的,否则谁还敢往里头存文件呢? 默认的最大一半内存大小在某些场合可能不够用,并且默认的inode数量很低一般都要调高些,这时可以用mount命令来管理它。 mount -o size=1500M -o nr_inodes=1000000 -o noatime,nodiratime -o remount /dev/shm 在2G的机器上,将最大容量调到1.5G,并且inode数量调到1000000,这意味着大致可存入最多一百万个小文件。   为当/dev/shm空间不够时可以占用swap的空间,所以不用担心存储空间不够用。想想看,从磁盘IO操作到内存操作,php读写SESSION的速度会快多少?只是需要注意,存储在/dev/shm的数据,在服务器重启后会全部丢失。   默认系统就会加载/dev/shm ,它就是所谓的tmpfs,有人说跟ramdisk(虚拟磁盘),但不一样。象虚拟磁盘一样,tmpfs 可以使用您的 RAM,但它也可以使用您的交换分区来存储。而且传统的虚拟磁盘是个块设备,并需要一个 mkfs 之类的命令才能真正地使用它,tmpfs 是一个文件系统,而不是块设备;您只是安装它,它就可以使用了。  tmpfs有以下优势:  1,动态文件系统的大小。  2,tmpfs 的另一个主要的好处是它闪电般的速度。因为典型的 tmpfs 文件系统会完全驻留在 RAM 中,读写几乎可以是瞬间的。  3,tmpfs 数据在重新启动之后不会保留,因为虚拟内存本质上就是易失的。所以有必要做一些脚本做诸如加载,绑定的操作。  好了讲了一些大道理,还是讲讲应用吧:  首先在/dev/stm建个tmp文件夹,然后与实际/tmp绑定  mkdir /dev/shm/tmp  chmod 1777 /dev/shm/tmp  mount –bind /dev/shm/tmp /tmp(–bind )  在使用mount … 继续阅读

发表在 默认分类 | 标签为 , , , | 留下评论

js实现图片的延迟加载

1效果预览地址http://dev.3g.120.net/img/test.html   2.使用方法 执行函数         lazyLoad(document,’_lazysrc’)   第一个参数为        容器对象 第二个参数为        设置的“假”属性   lazyLoad(document,’_lazysrc’)的意思就是对document下面拥有_lazysrc属性的图片进行延迟加载 使用的注意事项:img标签中不能有src属性,否则图片会自动加载,就算后来移除也不行。    

发表在 公开课 | 标签为 | 留下评论

【转】REMOTE_ADDR HTTP_CLIENT_IP HTTP_X_FORWARDED_FOR

dz的代码判断IP那块太让人头疼了,日,REMOTE_ADDR,HTTP_CLIENT_IP,HTTP_X_FORWARDED_FOR三个东西在手册上太不详细了,基本上就等于没有。 网上gg了一下,找到一点,另外,有一个思路太巧了,用JS取IP以后POST到服务器,Y的用代理骗服务器?有种上网先把Js给关了啊!!哦哈哈,以后有机会用ajax试一下,也省得用这三个变量if得死去活来了。 $_SERVER['...']; // for php 一、没有使用代理服务器的情况:       REMOTE_ADDR = 您的 IP       HTTP_VIA = 没数值或不显示       HTTP_X_FORWARDED_FOR = 没数值或不显示 二、使用透明代理服务器的情况:Transparent Proxies       REMOTE_ADDR = 最后一个代理服务器 IP       HTTP_VIA = 代理服务器 IP       HTTP_X_FORWARDED_FOR = 您的真实 IP ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。 … 继续阅读

发表在 默认分类 | 标签为 , | 留下评论

Mysql主从复制

windows主机:192.168.0.113linux虚拟机:192.168.0.252 考虑兼容,从库版本 >= 主库版本  最好同版本 1.授权(在主服务器上进行)GRANT REPLICATION SLAVE ON *.* to ‘slave’@’192.168.0.*’ identified by ‘slave’;增加的用户为 slave 密码为 slave 先在从库上用新增的用户名连接一下看看。 mysql -u slave -h 192.168.0.113 -p    密码输入slave 2.查询主数据库状态(主服务器上进行) 先锁主库表 FLUSH TABLES WITH READ LOCK; show master status; | File | Position … 继续阅读

发表在 Mysql | 标签为 , | 留下评论

redhat安装mysql

mysql-5.1.57.tar.gz包放在/usr/local/src cd  /usr/local/src tar -zxvf  mysql-5.1.57.tar.gz    (-C /usr/xx/  解压到其他目录) cd mysql-5.1.57 ./configure –prefix=/usr/local/mysql make make install 不要急着执行红色部分   为mysql单独建立一个用户 groupadd mysqluseradd mysql -g mysql cp /usr/local/src/mysql-5.1.57/support-files/my-small.cnf      /etc/my.cnf    (还有my-medium.conf 、my-large.conf、my-huge.conf) 没有my.cnf报错,大概是cant’write xx.frm (跟目录的权限可能也有关系) 复制之后还是会报错: Fatal error: Please read “Security” section of … 继续阅读

发表在 Linux | 标签为 , , | 留下评论