【一】.介绍session
由于HTTP是无状态的请求,创建一个会话需要保持必须需要身份标识。当用户第一次访问,PHP会为用户创建一个唯一的sessionid,并将sessionid通过cookie发送给浏览器,并在服务器的临时文件创建一个以sessionid为名的文件用来保存这个sessionid保存的信息。
举例:
(1).访问我的网站http://www.gaojiufeng.cn,访问后发现本地的cookie有一个PHPSESSID=au63vsj6p5k35itclmbdufne66 ,服务器的cookies文件生成了一个sess_au63vsj6p5k35itclmbdufne66的文件
(2).当我再次访问我的网站,浏览器会自动携带cookie PHPSESSID=au63vsj6p5k35itclmbdufne66 来请求我的网站。
通过上面的例子,我们知道客户端的cookie中保存的sessionid和服务器的sessionid文件相关联,这样用户就能和系统交互,我们也知道用户的身份。这就是为什么PHP网站只需要拿到PHPSESSID=au63vsj6p5k35itclmbdufne66就能模拟登陆的原因了。
【二】.session只能保存字符串吗?
直接看代码:
$_SESSION['username'] = ['admin']; $_SESSION['password'] = 'admin';
看来session是可以保存数组的,为什么呢?因为session文件保存的都是基于php序列化的内容,比如下面的cookies文件内容
username|a:1:{i:0;s:5:"admin";}password|s:5:"admin";
【三】.session只能保存在文件中吗?
session不仅仅只能保存到文件中,还能保存到redis或者mysql中,如果只能保存到文件中,那么负载均衡部署怎么办?
redis在php.ini的配置,也可以通过ini_set的php代码方式配置,一定要保证安装了redis扩展
session.save_handler = redis session.save_path = "tcp://127.0.0.1:6379" //session.save_path = "tcp://127.0.0.1:6379?auth=123456" 有密码的写法
首先下载wkhtmltox-0.12.4_linux-generic-amd64.tar.xz (不要下载RPM包,依赖太多,需要x-server支持),并解压,执行测试运行正常tar wkhtmltox-0.12.4_linux-generic-amd64.tar.xzcd...
原理:使用curl_init()创建多个请求实例,再使用curl_multi_init()批量执行创建的多个请求实例。文件1:curl.php<?php $threads=500;//并发请求次数 $url='http://blog.cn/index.php?';...
在PHP中,大部分变量类型,如字符串,整型,浮点,数组等都是值类型的,而类和对象是引用类型.和其他语言有点差距.(1).在值类型中我们直接使用&符号表示指向对应变量的内存地址,当前变量和被指向的变量只要有1个的值被修改都会直接影响另外一个变量的值发生变化。(ps:还是非常节省内存的,可以使用...
在一个正式项目中操作人员提交239个产品信息进行保存,但是系统却提示没有提交239个产品,于是开启错误信息,显示如下:Warning: Unknown: Input variables exceeded 1000. To incr...
php官方已经提供了Iterator(迭代器)接口,通过网上资料的学习,目前看适合超大集合或者数组提取使用。学习一个函数的实现对比内存占用差距.使用迭代器和普通循环实现range()函数。(1).普通循环实现range()函数。function newrange($low, $h...
重构框架的时候想要考虑支持下cli模式,于是参考了thinkphp的底层。/** * 获取应用根目录 * @return string */ public static function getRootP...