SQL预处理语句(Prepared Statements)

许多成熟的数据库都支持预处理语句(Prepared Statements)的概念。它们是什么东西?你可以把它们想成是一种编译过的要执行的SQL语句模板,可以使用不同的变量参数定制它。预处理语句具有两个主要的优点:

查询只需要被解析(或准备)一次,但可以使用相同或不同的参数执行多次。当查询准备好(Prepared)之后,数据库就会分析,编译并优化它要执行查询的计划。对于复杂查询来说,如果你要重复执行许多次有不同参数的但结构相同的查询,这个过程会占用大量的时间,使得你的应用变慢。通过使用一个预处理语句你就可以避免重复分析、编译、优化的环节。简单来说,预处理语句使用更少的资源,执行速度也就更快。

传给预处理语句的参数不需要使用引号,底层驱动会为你处理这个。如果你的应用独占地使用预处理语句,你就可以确信没有SQL注入会发生。(然而,如果你仍然在用基于不受信任的输入来构建查询的其他部分,这仍然是具有风险的)。 继续阅读SQL预处理语句(Prepared Statements)

让ThinkPHP支持多伪静态后序

需求场景
大家都听说过伪静态有利于SEO,很自然的想到ThinkPHP的URL伪静态功能,当然这只是一个引子。
真正蛋疼的需求来了,当你要为自已的站点增加一个网站地图链接的时候,如:

http://www.a.com/index.php/Sitemap/index

通过隐藏index.php之后URL变成了这样

http://www.a.com/Sitemap/index

因为ThinkPHP支持默认操作,URL再简化一点

http://www.a.com/Sitemap

加上伪静态

http://www.com/Sitemap.html

继续阅读让ThinkPHP支持多伪静态后序

jQuery1.7.2正式发布

Query 1.7.2 is looking good! The release candidate went smoothly so we’ve made only one small change and are releasing it to your eager hands today. You can get the oven-fresh code from the jQuery CDN now, with Google and Microsoft CDNs soon to follow:

继续阅读jQuery1.7.2正式发布

Linux下测试硬盘读写速度

time有计时作用
dd用于复制,从if读出,写到of
if=/dev/zero不产生IO,因此可以用来测试纯写速度。
同理of=/dev/null不产生IO,可以用来测试纯读速度。
bs是每次读或写的大小,即一个块的大小,count是读写块的数量。
1.测/目录所在磁盘的纯写速度:

time dd if=/dev/zero bs=1024 count=1000000 of=/1Gb.file

2.测/目录所在磁盘的纯读速度:

dd if=/kvm/ftp/other/1Gb.file bs=64k |dd of=/dev/null

3.测读写速度(这是什么):

dd if=/vat/test of=/oradata/test1 bs=64k

理论上复制量越大测试越准确。

wnmpserver+ThinkPHP3.0性能测试

声明:此报告纯粹无聊,并不是为了证明wnmpserver的性能多优越,也不是证明ThinkPHP的性能有多好,ThinkPHP性能测试参考《3.0调试模式和部署模式的性能比较》。

Hello World测试

部署模式
Requests per second: 91.25 [#/sec] (mean)
Time per request: 1095.863 [ms] (mean)
Time per request: 10.959 [ms] (mean, across all concurrent requests)
Transfer rate: 52.22 [Kbytes/sec] received

调试模式
Requests per second: 74.04 [#/sec] (mean)
Time per request: 1350.577 [ms] (mean)
Time per request: 13.506 [ms] (mean, across all concurrent requests)
Transfer rate: 40.26 [Kbytes/sec] received

wnmpserver测试版首发 体验php5.4新特性

php5.4+mysql+nginx集成环境wnmpserver测试版首发

集成软件
php-5.4.0
nginx-1.1.16
mysql-5.5.20
memcached-1.2.6

更新日志
2012-03-07
[升级]php升级至5.4.0
[升级]mysql升级至5.5.20
[升级]nginx升级至1.1.16
[更新]目录结构调整
[更新]管理脚本改进
[增加]重启脚本wnmp_restart.bat
[问题]php_memcache.dll未找到适合版本

下载地址
wnmp-1.0.0.2beta绿色版

PHP5.4新特性

PHP5.4正式前两天发布了,之前有看了一些PHP5.4主要特性相关文章,因此在这里小结一下。

其中好几点更新是由Laruence贡献的!本文部分内容也是源自Laruence的博客。

1. Buid-in web server
PHP5.4内置了一个简单的Web服务器,这样在做一些简单程序就方便多了,省去了环境配置的工作,特别对于初学者来说。
把当前目录作为Root Document只需要这条命令即可:

$ php -S localhost:3300

也可以指定其它路径:

$ php -S localhost:3300 -t /path/to/root

还可以指定路由:

$ php -S localhost:3300 router.php

参考:PHP: Build-in web server
继续阅读PHP5.4新特性

PHP变量名中的点

通常,PHP 不会改变传递给脚本中的变量名。然而应该注意到点(句号)不是 PHP 变量名中的合法字符。至于原因,看看:

< ?php
$varname.ext;  /* 非法变量名 */
?>

这时,解析器看到是一个名为 $varname 的变量,后面跟着一个字符串连接运算符,后面跟着一个裸字符串(即没有加引号的字符串,且不匹配任何已知的健名或保留字)’ext’。很明显这不是想要的结果。
出于此原因,要注意 PHP 将会自动将变量名中的点替换成下划线。 继续阅读PHP变量名中的点