Archive for the ‘Study notes’ Category

MySQL转SQLite Shell脚本

杭城焰火满天飞, 闲来无事, 给 WordPress 换上SQLite; SQLite 在单服务器10W并发以下是很有优势的, 据说可以达到mysql与postgresql的2~20倍(道听途说, 没验证)。 使用WP插件pdo for wordpress, 本来使用XML导入导出数据, 奈何文件太大, 超过php的内存限制,找了个MySQL转SQLite的教本, 很好用, 分享。
文件: mysql2sqlite.sh

编译一个适合自己的MySQL – MySQL邯郸学步

为什么需要编译MySQL ? 性能! 那么不费话 开始:

###以 MySQL 5.1.42 为例
#tar xvf mysql-5.1.42.tar.gz
#cd mysql-5.1.42/
#./configure –prefix=/usr/local/mysql51 ### 只定安装目录
–with-embedded-server –enable-assembler –with-mysqld-ldflags=-all-static –with-client-ldflags=-all-static ### 静态编译
–without-debug –without-docs –without-man –without-readline ### 舍去不必要的东东
–with-charset=utf8 –with-collation=utf8_general_ci ### 指定编码,建议使用utf8, 默认latin1
–with-extra-charsets=complex ### 添加支持的编码, 根据自己的需求指定
–enable-thread-safe-client ### 线程安全
–enable-local-infile –with-ssl –with-libwrap [...]

迁移 Innodb 共享表空间至独立表空间 – MySQL邯郸学步

关于 MySQL 中的 Innodb 引擎就不多说了, 毕竟除了MyISAM 之外, 它的应用最广泛. Innodb 存储数据有两种方式: 共享表空间 和 独立表空间. 顾名思义, 共享表空间 就是把所有数据库数据放在一个或多个文件中( 这种方式的话,使用裸设备倒是很方便); 独立表空间 就是采用和MyISAM 想同的方式, 每个表拥有一个独立的数据文件( .idb )。
在服务器资源有限,单表数据不是特别多的情况下, 独立表空间明显比共享方式效率更高. 但是MySQL 默认是共享表空间, 现在LD 来演示一下转换方法.

简单的PHP文件缓存测试

LD 写过一个 DsCache, 当然, 现在集成在新框架中, 嘿嘿, 还是自己写的东…西…好用!
言归正传, 之前 QeePHP 论坛里曾出过这么一个传言, 那就是 phpdatafile 缓存方式速度极快, 老大还说, ta几乎可以和 xcache 匹敌. 于是 LD 杀到 qee 的svn中, look 一点源码. 其实所谓 phpdatafile, 关键在于 var_export , 那么普通php 文件缓存呢? serialize. 简单改写后, 测试了下. 大跌眼镜.

按照自己的方式,去度过人生!

昨晚11点, 第三次读完《明朝那些事儿》, 彻夜未眠.
LD 并不是个聪明的人, 前两次均未理解所谓历史 所谓宿命 所谓自由. 这半年, 从09年9月, 第三次读《明》, 完全不同的感受, 石悅的历史观也许是悲观的, 正如他如是说. 然, LD 是悲愤的!
可以活得唯唯缩缩, 可以轰轰烈烈, 也可平平淡淡, 人之所以为人, 就是与别个不同. 10月, LD 曾慕名前往于谦祠, 旁边帅GG 惊呼: 于谦? 谁啊? 好像以前学过… 是啊~ 我也是. 强人只是那么一瞬间, 那一刻 绽放比凡人璀璨的花火, 之后殒灭为尘秽, 清澈、汙浊平凡无异.
生活的目标 一点足矣, 开心. 礼义廉耻 忠义孝廉 儿戏 儿戏, 二十几年来, 从没有这么坚定, 从没有这么澄净. 引用《火鳳燎原》中那句话: 属于我的这个年代, 将比任何朝代来得久远!

PHP容易被人忽略的10件事

1.使用 ip2long() 和 long2ip() 函数来把 IP 地址转化成整型存储到数据库里。这种方法把存储空间降到了接近四分之一(char(15) 的 15 个字节对整形的 4 个字节),计算一个特定的地址是不是在一个区段内页更简单了,而且加快了搜索和排序的速度(虽然有时仅仅是快了一点)。
2.在验证 email 地址的时候使用 checkdnsrr() 函数验证域名是否存在。这个内置函数能够确认指定的域名能够解析成 IP 地址。该函数的PHP 文档的用户评论部分有一个简单的用户自定义函数,这个函数基于 checkdnsrr(),用来验证 email 地址的合法性。对于那些认为自己的 email 地址是 “joeuser@wwwphp.net” 而不是 “joeuser@php.net” 的家伙们,这个方法可以很方便的抓住他们。

简单实用的PHP模板引擎 DsTemplate

昨天花了点时间写了个PHP的模板类, 自我感觉良好, 模板中使用php原生语法, 简单、实用、快速. 嘿嘿,源码+注释不到150行, 原来我已经到这里了阿~_~
LD 是极其痛恨 Smarty 和 ADOdb 的! 以前在公司简单作过测试, 一个页面八成的时间花在这两个大腕上, 惨. 这个DsTemplate + MagicDB + DsCache 应该可以完美替代 Smarty + ADOdb 的无耻组合了.
有种说法不置可否, “php 自己就是一个模板引擎” OR “php 的框架不过是建里在框架上的框架” . so 以其使用Smarty , 不如改用Blitz , 或者干脆自己写个简单的.
源代码地址: http://code.google.com/p/dscache/source/browse/trunk/DsTemplate/DsTemplate.class.php

原来提交AUR这么简单哈

话说用了这么久Arch Linux, 也没啥贡献, 昨日发现AUR上还没有人维护 Blitz 的包, 那么偶就代劳了.
把PKGBUILD脚本提交AUR太简单, 选择文件、上传, 其余全自动的, 真方便. PS: 本来忘了AUR密码的, 网站维护者估计也看穿了偶蹩脚的engilsh, 给我reset一个”常用测试密码”, 囧.
小常识: Blitz

阳春白雪 MagicDB

把PHP的 mysql 和 mysqli 封装一下, 然后加个静态化的单件模式就是 阳春白雪的 MagicDB.
在Driver是 ‘mysql’ 的情况下, 内部自动判断可用的 extension, 然后建立连接, 操作和PDO相同哦! 顺序 PDO、mysqli、mysql. 如果PDO可用,则优先使用PDO作为数据库驱动.

示例:

处理三角关系MySQL数据库的备份和数据迁移

遇到这么一个情况: 数据库A 依赖数据库B, B依赖数据库C, C又依赖A. 我称之为 三角关系. 最终要完成数据结构的升级. 其实这个case中, 一共牵涉到12个数据库,为了说明清楚, 只以数据库 A B C 为例.
完成升级,包括:

保留原数据;

替换所有存储过程, 函数, 触发器, 视图;

升成必要数据, 插入配置数据;