欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

PHP 读写Cookie效率分析与性能优化

程序员文章站 2022-05-17 18:05:23
...
掌握PHP读写 Cookie的执行时间与效率问题,了解PHP读写Cookie对性能的影响,并在实际开发中合理的使用PHP读写Cookie,分析工具采用PEAR Benchmark_Iterate类,主要关注指标为PHP读写Cookie的程序执行时间。

目录

一,什么是PEAR与Benchmark类
二,为什么要分析PHP读写Cookie情况
三,性能测试代码
四,性能测试结果
五,性能测试总结
六,setcookie函数说明
七,附性能测试源代码下载
参考资料

一,什么是PEAR与Benchmark类

请参考PHP性能优化系列
第二期 PHP性能优化工具篇Benchmark类调试执行时间
第一期 PHP性能优化准备篇图解PEAR安装

二,为什么要分析PHP读写Cookie情况

1,什么是Cookie?
Cookie,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据。

2,PHP与Cookie
PHP通过内置函数setcookie()写cookie,通过$_COOKIE全局变量读cookie,在实际开发中,读写Cookie是与用户交互最主要的方式之一,并且使用也非常频繁,因些需要了解PHP在读写操作Cookie的性能与效率问题。

三,性能测试代码

编写三个函数,分别为写cookie、读cookie和读写cookie,代码如下:

代码如下 复制代码
require_once "Benchmark/Iterate.php";
$bench = new Benchmark_Iterate;
function set(){
setcookie("TestCookie", time(), time()+3600, "/", "", 1);
}
function get(){
return isset($_COOKIE['TestCookie']) ? $_COOKIE['TestCookie'] : '';
}
function cookie(){
get();
set();
}
$bench->run(50,"set");
//$bench->run(50,"get");
//$bench->run(50,"cookie");
$result = $bench->get();
?>

使用Benchmark_Iterate类工具分别调用各个函数50次获取PHP读写Cookie的平均执行时间并生成图表。

四,性能测试结果

1,PHP写Cookie的执行时间


图解:使用PHP内置函数setcookie()向客户端发送一个 HTTP cookie,写Cookie的执行时间 0.00072s左右 注s表示秒

2,PHP读Cookie的执行时间


图解:使用全局变量$_COOKIE获取客户端cookie值,读Cookie的执行时间 0.00051s左右

3,PHP读写Cookie的执行时间

先读取cookie值,然后再向客户端发送一个 HTTP cookie,读写Cookie的执行时间 0.00088s左右

五,性能测试总结

通过折线图可以清楚看到,setcookie() 函数向客户端发送一个 HTTP cookie需要的执行时间大约是0.00072s左右,也就是0.7毫秒,PHP读取Cookie的执行时间为0.00051s左右,也就是0.5毫秒,如果同时读写操作Cookie需要的执行时间为0.00088s,也就是0.8毫秒左右,这些操作在秒的时代基本上执行的时间非常短,但请不要小看这个值,正常的PHP内置函数执行的时间大约在0.3毫秒左右,相对而言读写Cookie的执行时间是比较耗时的,因此,在实际开发中要尽量少用这样的函数,充分考虑读写Cookie的情况,特别是写cookie的情况!

毫秒世界还在继续,请关注下一期PHP性能优化系列。

六,setcookie函数说明

setcookie() 函数向客户端发送一个 HTTP cookie。

代码如下 复制代码

bool setcookie ( string $name [, string $value [, int $expire = 0 [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]]]] )

1,cookie 是由服务器发送到浏览器的变量。
2,cookie 通常是服务器嵌入到用户计算机中的小文本文件。每当计算机通过浏览器请求一个页面,就会发送这个 cookie。
3,cookie 的名称指定为相同名称的变量。例如,如果被发送的 cookie 名为 "name",会自动创建名为 $user 的变量,包含 cookie 的值。
4,必须在任何其他输出发送前对 cookie 进行赋值。
5,如果成功,则该函数返回 true,否则返回 false。