`
renzhen
  • 浏览: 252010 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

PHP中使用static变量做缓存(小技巧)

    博客分类:
  • PHP
阅读更多

   我最近为客户做一个导入功能,功能中有一个需求,客户中有一个媒体字段,导入后要根据导入客户的媒体,查出媒体的一些数据更新到这个客户的字段中。

   当我做完后,测试导入功能没有问题,便交付了,过不多久,客户反映速度有点慢,在查原因,发现和查出媒体的一些数据有关,虽然sql语句执行时间很短,但是由于导入数据量很大,每一次都要执行,导致了时间延长了。

   分析了原因后,我们想解决方案了,这个开发的人一看就知道了,就是‘缓存’,那具体使用什么技术呢,分析这个问题,可以发现:

   1.导入的客户巨大,但是客户的媒体很多都是重复的,许多sql语句是重复执行的。

   2.由于媒体的信息更新的,但是可以认定本次访问中相同媒体获得的数据相同,所以这次的缓存的有效时间只是本次连接时间。

   3. 缓存的速度要尽可能的快。众所周知,不同的缓存的速度是不同的,本地内存>memcache>磁盘缓存。

    而这三个特点,可以使用static变量来实现缓存。代码基本形式如下:

   

function updateFirstEndFromBatchtasks(...){
        static $cache=array();
        $val=$$cache[$key];
        if(is_null($val)){
            $val=.....//获取$val的值
            $cache[$key]=$val;
        }
}

 

  下面说说static变量来实现缓存的优缺点吧:

   优点:

   速度快,效率高,实现简单。由于是PHP内部变量,是所有缓存中执行效率最高的。

   缺点:

   灵活性差,只在本次连接中有效,执行区域小,只在同一个函数中有效,无法跨函数运作(可以使用全局变量替代)。

   static变量做缓存非常好用,而且耗费的资源不多,对于要查询数据库的,且在一次连接中可能执行多次的,不妨加上。虽然可能效果有限。

分享到:
评论

相关推荐

    java内存管理的小技巧

    ### Java内存管理的小技巧 #### 一、合理使用Boolean封装 在Java开发中,Boolean类型在许多场景下是必不可少的,特别是在与数据库交互时。例如,在JDBC中,布尔值类型的set与get方法通常需要通过`Boolean`封装来...

    几个C#编程的小技巧

    ### C#编程的小技巧 在本篇文章中,我们将探讨几个实用的C#编程技巧,旨在帮助开发者提升代码质量和效率。 #### 最小化窗口 在Windows应用程序中,有时我们需要控制窗体的状态,比如最小化窗口。这可以通过重写...

    保持代码健壮性的小技巧

    ### 保持代码健壮性的小技巧:深入学习Java原理 #### 1. 字符串连接:性能与效率 在Java中,字符串连接是常见的操作,但不同的实现方式对性能的影响巨大。直接使用加号(`+`)进行字符串连接会在每次操作时创建新...

    Java语言中内存管理的几个技巧

    `static`变量在整个类的生命周期中只有一份副本,虽然可以共享,但容易成为内存泄漏的源头。除非必要,应优先考虑使用`final`修饰的类内私有常量,这样既能保持不变性,又可避免潜在的内存问题。 综上所述,Java...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例271 清理SESSION缓存提高网站访问的效率 358 第6章 图形图像处理 361 6.1 图像与统计 362 实例272 图形计数器 362 实例273 GD2图形计数器 363 实例274 通过图像显示投票统计结果 365 实例275 通过图像显示密码...

    50点提高PHP编程效率

    - **绝对路径优于相对路径**:在`include`语句中使用绝对路径,可以减少PHP寻找文件所需的时间,提高加载速度。 ### 6. 时间戳获取 - **使用`$_SERVER['REQUEST_TIME']`代替`time()`**:获取脚本开始执行时间时,...

    提高PHP编程效率 引入缓存机制提升性能

    3. **文件缓存**: 对于较小的数据集或者简单的应用场景,可以考虑使用文件缓存机制。虽然不如内存缓存快速,但在资源有限的情况下也是一种有效的解决方案。 #### 二、优化代码编写方式 1. **字符串处理**: 使用单...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例271 清理SESSION缓存提高网站访问的效率 358 第6章 图形图像处理 361 6.1 图像与统计 362 实例272 图形计数器 362 实例273 GD2图形计数器 363 实例274 通过图像显示投票统计结果 365 实例275 通过图像显示密码...

    C#清除WebBrowser中Cookie缓存的方法

    为了解决这个问题,我们需要清除WebBrowser控件中的Cookie缓存。下面将详细介绍如何在C#中实现这一功能。 首先,我们要了解Cookie的工作原理。Cookie是服务器发送到用户浏览器并存储在本地的小型文本文件,用于跟踪...

    js使用小技巧

    Javascript小技巧一箩筐 事件源对象 event.srcElement.tagName event.srcElement.type 捕获释放 event.srcElement.setCapture(); event.srcElement.releaseCapture(); 事件按键 event.keyCode ...

    简单介绍Java语言中内存管理的几个技巧

    在深入探讨Java语言中内存管理的技巧之前,我们先来明确一下Java内存管理的基本概念。Java内存管理主要涉及堆内存(Heap Memory)和非堆内存(Non-Heap Memory)。堆内存是应用程序的主要存储区域,用于存储对象实例...

    Java内存管理的9个小技巧

    以下就是针对Java内存管理的9个小技巧: 1. **避免使用`new Boolean()`**:创建新的`Boolean`对象会占用额外的内存,因为每个对象都有自己的内存开销。`Boolean`类提供了`TRUE`和`FALSE`两个静态常量,可以通过`...

    Java面试宝典2011优化版

    14. **Integer与int的区别**:Integer是int的包装类,提供了更多功能,如自动装箱拆箱、缓存小数值等。int是原始数据类型,直接存储值,没有对象的概念。 15. **Math.round方法**:Math.round(11.5)等于12,Math....

    java代码性能的优化

    栈中的变量访问速度快于堆中的对象,因此尽可能使用局部变量而非对象实例可以提高程序执行效率。 #### 6. 装箱与拆箱 装箱是指将基本数据类型转换为对应的包装类,而拆箱则是相反的过程。频繁地进行装箱和拆箱操作...

    Unity3D教程:性能优化2

    在 Unity 中,我们可以使用静态类型化(Static Typing)来代替动态类型化(Dynamic Typing),从而提高性能。 Unity 使用一种叫做类型推导(Type Inference)的技术,自动把 JavaScript 转化为静态类型代码...

    优化php效率,提高php性能的一些方法

    在文件I/O操作方面,require/include_once每次被调用时都会打开目标文件,应尽量避免使用,或者使用绝对路径来解决PHP5.2/6.0中的问题。新版的APC缓存系统可以解决这个问题。 在代码编写时,不要调用不必要的函数。...

    C代码优化方案1、选择合适的算法和数据结构__ 4 2、使用尽量小的数据类型__ 5

    - **按数据类型的长度排序**:将结构体中的成员按照其类型长度由小到大排列,可以减少内存碎片,提高缓存利用率。 - **示例**:如果一个结构体包含多个成员,例如`int`、`double`、`char`等,应当考虑将`char`...

    java内存管理[归类].pdf

    Java内存管理是Java编程中... - 避免过多使用`static`变量,除非必要,可以使用`final`常量代替。 通过理解和应用上述Java内存管理知识,可以有效提高程序性能,减少内存占用,避免内存溢出,确保程序的稳定性和效率。

    教你C#里使用指针指针在C\C++里面可是一个好东西

    4. **结构体操作**:在C#中处理结构体时,如果需要直接操作其内部的指针,可以使用`fixed`关键字来固定一个结构体实例的地址,以便在不安全的上下文中使用。 5. **内存管理**:使用`unsafe`代码块可以实现类似C/C++...

Global site tag (gtag.js) - Google Analytics