存档
-
在什么场景下使用闭包?
在需要把逻辑封装到自己的范围内的情况下,闭包会十分有用。重构旧代码以进行简化并提高可读性就是这样一个例子。查看以下示例,该示例显示了在运行一些 SQL 查询时使用的记录程序。 12345678910//记录 SQL 查询的代码 $db = mysqli_connect("server","user","pass"); Logger::log(’debug’,'database’,'Connected to database’); $db->query(’insert into parts (part, description) values (‘Hammer’,'Pounds nails’); Logger::log(‘debug’,'database’,'Insert Hammer into to parts table’); $db->query(‘insert into parts (part, description) values (’Drill’,'Puts holes in wood’); Logger::log(’debug’,'database’,'Insert Drill into to parts table’); $db->query(’insert into parts [...]
135 阅读 | 没有评论2011年12月7日 | 归档于 LAMP -
【转载】浅谈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中代码: 12345678$sessid = ”; while (strlen($sessid) < 32) { $sessid .= mt_rand(0, mt_getrandmax()); } // To make the session ID even more secure we’ll combine it with the user’s IP $sessid .= $this->CI->input->ip_address(); $sessid = md5(uniqid($sessid, TRUE)) 生成的ID存放在服务器的某一目录下,这由php.ini中session.save_path配置。如果你选择默认的文件式session存储,那么可能会遇到大量session文件导致IO性能下降,这个问题可以通过调节save_path来优化,具体请看大量php session临时文件带来的服务器效率问题。如果要在多个服务器中同步session id,你可以将其存放在数据库或共享缓存中。这需要你自定义一系列Session的读写方法,并在调用session_start函数前先设定好,以下面代码为例(来自php document中的一段示例代码): 123456CREATE TABLE `ws_sessions` [...]
195 阅读 | 没有评论2011年11月28日 | 归档于 LAMP -
rename 函数和 copy 函数注意事项
rename 函数和 copy函数都是尝试进行操作。 rename是尝试重命名文件,copy是尝试复制文件,两者都是成功返回TRUE,失败返回FALSE。 因为是尝试操作,所有当目录下已经存在同名的文件时并不会去执行操作,从而返回FALSE。 如果想要尽量执行操作,而忽略同名文件,那么之前可以unlink一下。 –END–
211 阅读 | 没有评论2011年11月21日 | 归档于 LAMP标签: PHP -
PHP-FPM一些特点
PHP-FPM: PHP FastCGI 进程管理器 PHP-FPM 是一个用以极大地改进 FastCGI SAPI 在生产环境中使用的 PHP4/5 补丁,PHP5.3.3已经包含PHP-FPM的支持。 今天读到的一个网页,介绍了一些FPM的一些特性。 文中介绍的Error_Header 、优化上传支持、fastcgi_finish_request、request_slowlog_timeout都很用。 其中后面的两个可以用来提高网站的响应速度,个人比较感兴趣,有时间要做个试验看看情况。 详细介绍:http://php-fpm.org/wiki/CN:Features
404 阅读 | 没有评论2011年8月4日 | 归档于 LAMP -
PHP 5.4.0 alpha1版本发布
以前可能很少关注版本之间的变化,认为只要写好程序就OK了。但是作为一个PHP的忠实粉丝,如果不关心它的成长变化,实在有些说不过去。 http://www.php.net/releases/NEWS_5_4_0_alpha1.txt 上面的链接说明PHP 5.4.0 alpha1的一些变化,我从中发现几个我比较感兴趣的变化,整理如下: 1)Removed: session_is_registered(), session_register() and session_unregister() functions. (Kalle) 2)<?= is now always available regardless of the short_tags setting (Rasmus) 3)Changed default value of “default_charset” php.ini option from ISO-8859-1 to UTF-8. (Rasmus) 4)Moved extensions to PECL: (Johannes) . ext/sqlite. 5)Added array dereferencing support.
355 阅读 | 没有评论2011年7月2日 | 归档于 LAMP标签: PHP -
php怎么能是竹筏船呢?
php怎么能是竹筏船呢?
471 阅读 | 没有评论2011年6月26日 | 归档于 LAMP标签: PHP

近期评论