PHP中的Session机制

做web开发,必然会涉及到Session,这是由于http协议本身是无状态的(每次响应都是独立的,彼此间没有联系),所以如果需要在页面跳转间保持某个用户的身份,就要在每次连接时告诉服务器端你的唯一标示号,即Session ID。这样,服务器端便可通过Session ID得到所需的数据。

在PHP中,Session是通过$_SESSION这个全局变量来set/get的,不过在使用之前要先初始化。初始化是通过 session_start函数(如果php.ini中将session.auto_start设为1,则会自动初始化),之后PHP会为request 自动生成一个唯一随机数作为Session ID,生成算法默认提供了MD5 (128 bits) 和SHA-1 (160 bits),由php.ini中session.hash_function设定。其实也可以自定义,比如在随机数基础上将来访者的IP地址也加入到算法中,像CodeIgniter1.7.2中代码: Continue reading »PHP中的Session机制

php sql级别优化

1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。
2.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。
3.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:
select id from t where num is null
可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:
select id from t where num=0
4.应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,如:
select id from t where num=10 or num=20
可以这样查询:
select id from t where num=10
union all
select id from t where num=20 Continue reading »php sql级别优化

MongoDB与PHP

Windows PHP的MongoDB拓展的安装

windows下用php操作MongoDB需要安装驱动,所需dll可以到http://github.com/mongodb/mongo-php-driver/downloads 下载。比如我的php版本是5.2.6,我下载的就是mongo-1.0.9-php5.2vc6ts.zip。

把php_mongo.dll放到你php的ext目录,然后php.ini中加入

extension=php_mongo.dll

重启web服务器就可以了。是否成功可以通过查看phpinfo() 函数的结果中是否加载了MongoDB模块儿来判定。

与mysql对应的php下数据库管理工具phpmyadmin类似,MongoDB下的php数据库管理工具为phpmoadmin可以到http://www.phpmoadmin.com/ 这里下载,放到你的web路径下就ok。

现在你可以开始自己的php与MongoDB的开发之旅了。

 

Linux PHP的MongoDB拓展的安装 # wget http://pecl.php.net/get/mongo-1.2.6.tgz # tar zxvf mongo-1.2.6.tgz # cd mongo-1.2.6 # /usr/local/php/bin/phpize # ./configure –enable-mongo=share –with-php-config=/usr/local/php/bin/php-config # make && make installl

将生成的拓展mongo.so文件添加到php.ini中,重启php-fpm,然后查看下phpinfo()

请编辑php.ini文件。添加如下一行:

PHP Code复制内容到剪贴板 extension=mongo.so

然后用php输出:phpinfo,就可以看到mongo的信息了。。这样就说明你安装成功的了!

PHP操作MongoDB

本教程[翻译自PHP官方手册]

MongoDB是最近比较流行的NoSQL数据库,网络上关于PHP操作MongoDB的资料太少了,大部分都是英文文档,于是蜗牛我用蹩脚的英语为大家翻译一下来自PHP官方的文档,水平有限请多多见谅

链接数据库 使用下面的代码创建一个数据库链接

<?php $connection = new Mongo(); //链接到 localhost:27017 $connection = new Mongo( “example.com” ); //链接到远程主机(默认端口) $connection = new Mongo( “example.com:65432″ ); //链接到远程主机的自定义的端口 ?>

现在你可以使用$connection链接来操作数据库了

选择数据库 使用下面的代码来选择一个数据库

<?php $db = $connection->dbname; ?>

这里的数据库并不一定是一个已经存在的数据库,如果所选择的数据库不存在,则会新建一个数据库,所以在选择数据库的时候,注意一定要填上正确的数据库名 如果拼写错误的话,很有可能会新建一个数据库

<?php $db = $connection->mybiglongdbname; //做一些事情 $db = $connection->mybiglongdbnme; //现在会连上一个新的数据库 ?>

获取一个集合 获取一个集合跟选择数据库拥有相同的语法格式

<?php $db = $connection->baz;//选择数据库 $collection = . . . → Read More: PHP操作MongoDB

php模板实现

         php开发中常用的模板有smarty, zend framework自身也有一套模板。实际上除非不得不使用它们,否则你应该很快就意识到,使用起来并不怎么方便。smarty需要引入库文件,学习smarty模板语法,虽然和php相似,却又不尽相同,增加了学习成本,使用起来还要config一下。要想使用ZendFramework 中的模板,肯定得使用ZF库不可,已使用ZF库,开发模式便很容易被限制在ZF下,所以也不是很灵活。

       先说一说为什么要使用模板技术,实际开发中所谓模板,不过是一段特殊的静态代码与动态变量的结合。所以调用模板函数时最常用的两个方法是:
(1) $tplObject->assign($key,$value)  — 模板变量赋值。(2)$tplObject->fetch($template_file) — 将模板对象与某一个模板文件结合输出结果。 Continue reading »php模板实现