Home > Backend Development > PHP Tutorial > php中的session性能问题

php中的session性能问题

PHPz
Release: 2018-10-08 09:15:06
forward
1026 people have browsed it

默认情况下开启PHP会话,会在服务器端创建一个sess_PHPSESSID文件,返回一个名为PHPSESSID的cookie给浏览器.PHP操作$_SESSION数组添加和访问会话数据.

PHP同一个会话之间共享同一个对象实例:
object通过serialize序列化成string,然后保存到会话变量中:
$_SESSION['object'] = serialize($object);
在使用这个会话(PHPSESSID)发出的其他http请求通过反序列化获取对象:
$object = unserialize($_SESSION['object']);
当然,数组也一样可以这样存储到一个会话变量中,非常方便有木有.

PHP会话存储默认使用files,对应php.ini配置项session.save_handler=files
存储位置默认是/tmp,对应session.save_path=/tmp

如果你觉得用文件系统保存会话文件会造成磁盘I/O过大,你完全可以用Memcache/Redis来存储会话.
PECL扩展memcache和redis都提供了session处理器,用于存储PHP会话内容.
http://pecl.php.net/package/memcache
http://php.net/manual/zh/memcache.ini.php
http://pecl.php.net/package/redis

Ubuntu可以这样安装:
sudo apt-get install memcached redis-server
sudo apt-get install php5-memcache php5-redis
pear install pecl/memcache

配置php.ini,加入:
extension=memcache.so
extension=redis.so
再把
session.save_handler = files
session.save_path = "/tmp"
改为(memcache):
session.save_handler = memcache
session.save_path = "tcp://127.0.0.1:11211"
改为(redis):
session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379"

session.save_path中多台memcache/redis服务器可以用逗号隔开.

session.save_path里的URL还可以可以包含一些参数,比如memcache的persistent,weight,timeout,retry_interval.

不能说PHP的session性能很烂,而是说计算机的io效率不高!

PHP默认session是以文件形式保存在本地文件系统中,每次访问都是做io操作,并发大的时候,必然会导致session文件爆发,导致读取文件变慢。

换一种方式,将session保存到内存或者数据库,性能会提高。

php session原理就这么简单,只看你运用了。

至于说cookie代替session就会提高,那是没什么依据的。cookie数据量有限制,而且cookie数据量大了以后,直接消耗你的带宽流量。

现在都是把session保存到memcached中

更多相关教程请访问   php编程从入门到精通全套视频教程

Related labels:
source:csdn.net
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template