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,代码如下:

 代码如下 复制代码
<?php
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。

时间: 2016-12-07

PHP 读写Cookie效率分析与性能优化的相关文章

MongoDB · 特性分析 · 网络性能优化

从 C10K 说起 对于高性能即时通讯技术(或者说互联网编程)比较关注的开发者,对C10K问题(即单机1万个并发连接问题)应该都有所了解.『C10K』概念最早由 Dan Kegel 发布于其个人站点,即出自其经典的<The C10K problem>一文[1]. 于是FreeBSD推出了kqueue,Linux推出了epoll,Windows推出了IOCP.这些操作系统提供的功能就是为了解决C10K问题. 常用网络模型 方案 名称 接受连接 网络 IO 计算任务 1 thread-per-co

Immutable源码分析与性能优化

Immutable原理解析 简介 what is Immutable 1.不可变,一成不变的 2.对immutable数据的每次修改操作都会返回一个新的data 掏出一副老生常谈的图 immutable的优点 1.历史回退(同时不浪费内存),时间旅行之类的easy! 2.函数式编程 3.降低代码的复杂度 数据类型 List: 类Array Map:类Object/Map Set:类Set OrderMap/Set:有序Map/Set ....还有些不常用的数据类型 API fromJS/toJS

Oracle Freelist和HWM原理探讨及相关性能优化

oracle|性能|优化 Oracle Freelist和HWM原理探讨及相关性能优化 中兴通讯重庆研究所 游波   关键词:Freelist,HWM,存储参数,段,块,dump,优化 文章摘要:    近期来,FreeList的重要作用逐渐为Oracle DBA所认识,网上也出现一些相关的讨论.本文以FreeList为线索对Oracle的存储管理的原理进行较深入的探讨,涉及Oracle段区块管理的原理,FreeList算法等.而与FreeList密切相关的一个重用特性HWM,与sql性能密切相

mysql 性能优化方向

国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私募机构九鼎控股打造,九鼎投资是在全国股份转让系统挂牌的公众公司,股票代码为430719,为"中国PE第一股",市值超1000亿元.    ----------------------------------------------------------------------------

mysql性能优化-慢查询分析、优化索引和配置

目录 一.优化概述 二.查询与索引优化分析 1性能瓶颈定位 Show命令 慢查询日志 explain分析查询 profiling分析查询   2索引及查询优化 三.配置优化 1)      max_connections 2)      back_log 3)      interactive_timeout 4)      key_buffer_size 5)      query_cache_size 6)      record_buffer_size 7)      read_rnd_b

Android应用性能优化最佳实践.2.2 性能分析工具

2.2 性能分析工具 从前一节可以看到,Android系统在4.1以后从框架上解决了由于系统问题导致的卡顿现象,但在实际的使用过程中,在用户的感受上,卡顿仍然是应用开发中主要面临的问题,而原因从上一节的分析中也知道本质是VSync信号到来时,不能及时处理绘制事件导致,本节先抛出以下两个问题: 1)应用层做了什么会导致VSync事件不能及时处理? 2)卡顿能监控吗? 性能问题并不容易复现,也不好定位,光从几个场景不能完全覆盖所有的问题,因此在做性能优化时,最直接有效的方法,就是尽量复现存在性能问题

《Oracle数据库性能优化方法论和最佳实践》——2.5 基于资源瓶颈分析的优化方法论

2.5 基于资源瓶颈分析的优化方法论 2.5.1 基于资源瓶颈分析优化方法论简述 Oracle要做优化,大部分人首先会想到瓶颈在哪里?资源瓶颈分析是如此之普及,以至于无论懂还是不懂的人都知道"瓶颈"这个术语,都知道性能优化首先要找到这个瓶颈,然后消除这个瓶颈.数据库系统的资源主要包括:CPU.内存和虚拟内存.I/O子系统.网络子系统. 绝大部分开发人员在写程序的时候都假设资源是无限的,CPU是无限快,内存是无限多,磁盘无限大并且像内存一样快,网络带宽无限并且像光速一样运行.事实上,大家

性能优化-位运算效率高还是位运算效率高?

问题描述 位运算效率高还是位运算效率高? 在<java程序性能优化>中写到,位运算是运算中最高效的,而我依照书上的代码运行了一遍 发现并不是这样. 补上代码: public class BitOperate { public static void main(String[] args) { nomal(); bit(); } private static void nomal() { long start =System.currentTimeMillis(); long a = 100;

jQuery性能优化技巧分析

 这篇文章主要介绍了jQuery性能优化技巧,较为详细的分析了jQuery的常见使用技巧,非常具有实用价值,需要的朋友可以参考下     本文较为详细分析了jQuery性能优化技巧.分享给大家供大家参考.具体分析如下: 一.使用最新版本的jQuery类库 jQuery新版本会较上个版本进行Bug修复和一些优化,不过需要注意的是,在更换版本之后,不要忘记测试你的代码,毕竟有时候不是完全向后兼容的. 二.使用合适的选择器 jQuery选择器性能最佳到最差方式如下: id选择器,如$('#id', c