`

PHP之中使用共享内存进行高速数据更新的一种方案 [转]

阅读更多

作者:HonestQiao


    如果在你实际的应用之中,你确实需要高速数据更新的操作,那么我们认为你已经具备以下先决条件:
    能够按照实际应用的需要而调整服务器
    关于这句话,大家自己可以明白意思的,不明白的自己想一想,如果没有达到这个要求,你是否有必要高速数据更新的操作, 或者先看看最后的附加说明.

    先见的参考文档:
1. http://w.yi.org/ftp/FAPM/PHP/php_manual_zh/ref.shmop.html
说明: PHP功能, 共享内存功能函数, 此处用于PHP直接操作内存, 提供高速数据操作
开启: 编译PHP的时候,加上参数: -enable-shmop
附注: 这个准备工作, 非常简单

2. http://w.yi.org/ftp/FAPM/PHP/php_manual_zh/ref.sem.html
说明: PHP功能, IPC通信相关功能函数, 此处用于使用信号量实现互斥
开启: 编译PHP的时候,加上参数: --enable-sysvsem
附注: 这个准备工作, 同样非常简单

3. http://www.huihoo.com/os/process/main.htm
说明: 学习资料, 进程的同步与互斥, 通俗的讲解了进程互斥的概念
附注: 学习资料,看看即可

4. http://www.huihoo.com/os/process/monitor.htm
说明: 学习资料, 信号量, 讲解了信号量在进程互斥之中的使用
附注: 学习资料,看看即可

5. http://www.ccw.com.cn/htm/app/aprog/01_4_25_3.asp
说明: 学习资料, 在PHP中实现进程间通讯, 讲解了如何在PHP之中利用共享内存和IPC视线进程间通讯
附注: 学习资料,看看即可

6. http://pear.php.net/package/System_SharedMemory/
说明: PEAR库, System_SharedMemory, 一个共享内存的PEAR库
支持: 使用pear管理程序, pear install System_SharedMemory-0.1.0
附注: 这个才正是我们所需要的.

    System_SharedMemory在PEAR的说明为"common OO-style shared memory API", 也就是"使用通常面向对象的模式操作共享内存的应用程序接口", 后面我们可以看到, 使用它来操作共享内存, 确实很简单, 要操做一个变量, 就和普通的对象的属性操作(使用set和get)类似了.

    首先, System_SharedMemory可以使用如下的多种途径来进行共享内存操作:

QUOTE:
PHP加速模块:     'eaccelerator' => 'Eaccelerator',   // Eaccelerator (Turck MMcache fork)
PHP加速模块:     'mmcache'      => 'Mmcache',        // Turck MMCache
PHP加速模块:     'Memcache'     => 'Memcached',      // Memched
共享内存模块:     'shmop_open'   => 'Shmop',          // Shmop
PHP加速模块:     'apc_fetch'    => 'Apc',            // APC
Apache功能:      'apache_note'  => 'Apachenote',     // Apache note
Systemv模块:     'shm_get_var'  => 'Systemv',        // System V
sqlite数据库模块: 'sqlite_open'  => 'Sqlite',         // SQLite
使用文件模拟:      'file'         => 'File',           // Plain text
PHP加速模块:      'fsockopen'    => 'Sharedance',     // Sharedance

以上所说的PHP加速模块是认为他在某一层面对PHP进行了加速.

    我们可以根据实际的情况,选用一种途径. 如果没有指定途径, 那么System_SharedMemory会自动从上直下检测是否存在类似途径的操作函数, 而自动选择途径.

    因为我的实验环境是*nix系统, 所以我选择了其中之一 Shmop 模式, 当然其他模式也完全是可以的, 只要你加了对应的编译参数或者扩展模块.

    以下为计数的演示代码:

<?php
    /// 引用System_SharedMemory库
    include_once 'System/SharedMemory.php';

    $intUpdateValue = 255;
    /// 数据库数据更新操作阀值, 255以内刚好一个字符

    /// 实例化System_SharedMemory对象
    $Shared =& System_SharedMemory::factory();

    /// 获取Count的值, 并+1, 如果没有初始化过, 值为0+1
    $intCount = intval($Shared->get('Count')) + 1;

    if($intCount >= 255){
       /// 计数器自增, 每255次
                $Shared->set('Count', '0');
                /// 计数器清零, 开始下一计数循环

                /// 数据库操作
                /// 数据库更新数据操作, 计数字段+=$intCount
    } else {
                $Shared->set('Count', strval($intCount));
                /// 使用共享内存保存计数器值
    }

        echo("$intCount");
        /// 显示本次循环计数器值
?>

现在把上面的这段代码演示一下子,你会看到一个高速数据更新计数器就这么简单了.
   
    附加说明: 一个小的站点也可以使用这个模块, 因为它可以自动的那个选择共享内存的操作途径, 如果没有对内存操作的函数, 他自动选择使用文件模拟.

from: http://bbs.chinaunix.net/viewthread.php?tid=669627

分享到:
评论

相关推荐

    PHP实现多服务器session共享之memcache共享.rar

    Session是Web应用程序中用于跟踪用户状态的一种机制,它存储在服务器端,与传统的基于cookie的客户端存储方式相比,更安全且能存储大量数据。然而,当一个网站部署在多台服务器上时,单个服务器上的session无法在...

    共享网盘系统PHP源码

    共享网盘系统是一种基于互联网技术,提供文件存储、分享及管理服务的应用程序。在本案例中,我们讨论的是一个使用PHP编程语言实现的共享网盘系统源码——"小白共享网盘系统源码V5.0"。PHP是一种广泛使用的开源脚本...

    phpweb资源共享

    在IT行业中,PHPWeb是一种基于PHP语言的开源网站框架,专为快速开发Web应用程序而设计。PHPWeb资源共享是其核心特性之一,它极大地提升了网站开发的效率和用户体验。本文将深入探讨PHPWeb如何实现资源共享,以及这一...

    PHP实现多服务器session共享之memcache共享

    PHP是一种广泛使用的服务器端脚本语言,它默认的session存储机制并不适用于多服务器环境。为了解决这个问题,开发者通常会利用外部存储服务,如memcached,来实现session共享。本文将深入探讨如何使用PHP和memcached...

    PHP进程通信基础之信号量与共享内存通信

    共享内存是另一种进程间通信方式,它允许不同进程直接读写同一块内存区域,速度较快。在PHP中,可以使用`shm_attach()`函数创建或连接到一个共享内存区域,`shm_put_var()`和`shm_get_var()`用于在共享内存中设置和...

    session共享之memcache Redis

    Session是Web应用程序中用于跟踪用户状态的一种机制。在HTTP协议无状态的特性下,Session提供了在多个请求之间保持用户状态的方法。通常,服务器会为每个用户生成一个唯一的Session ID,并将其存储在客户端(如...

    PHP中开发XML应用程序之基础篇 添加节点 删除节点 查询节点 查询节

    首先,XML(可扩展的标记语言)是一种W3C标准,它主要用于Web应用程序和服务器之间轻松的交互、数据的存储与使用。它允许开发者创建描述性标记,用以定义数据的含义和结构,这些标记对人和计算机都是易读的。XML数据...

    PHP名词库 [转自百度文库]

    缓存是一种临时存储数据的技术,目的是减少数据访问的时间和资源消耗。在PHP中,可以通过使用memcached或Redis等缓存系统来实现这一目标。缓存可以显著提高应用程序的性能,特别是在处理大量数据或高并发请求的情况...

    PHPEncryption安全的PHP加密库

    AES是一种广泛使用的对称加密算法,可以快速高效地对大量数据进行加密和解密,而HKDF则是一个强大的密钥派生函数,可以从主密钥安全地衍生出不同用途的子密钥。 库中的主要功能包括: 1. **密钥管理**:...

    【计算机专业PHP-毕业设计60套之】基于PHP实现的WEB图片共享系统(源代码+论文)

    1. **PHP基础**:PHP是一种广泛使用的服务器端脚本语言,特别适合于Web开发。在这个项目中,PHP被用来处理用户请求,执行数据库操作,以及动态生成网页内容。理解PHP的基础语法、函数库和面向对象编程的概念是完成...

    网站负载均衡解决专项方案.doc

    网站负载均衡技术是一种重要的解决方案,用于应对高流量网站或服务的访问压力,通过将工作负载分散到多个服务器,以防止单一服务器过载。本专项方案主要关注如何利用反向代理负载均衡策略,以及如何处理与之相关的...

    memcached扩展php5.3.8

    Memcached是一种高性能的分布式内存对象缓存系统,常用于加速动态Web应用程序,通过在内存中存储数据来减少数据库的负载。 **描述解读:** 描述中提到,这个扩展是PHP 5.3.8版本中的memcached插件,目的是提升PHP...

    一款好用的开源crm系统,使用PHP和Mysql开发

    开源版本的优势在于,用户可以查看和修改源代码,根据自己的业务需求进行定制化开发,或者参与到社区中,与其他开发者共享解决方案和经验。 悟空CRM的功能模块通常包括但不限于以下几部分: 1. **客户管理**:记录...

    基于PHP的然之协同管理系统.zip

    在IT领域,PHP(Hypertext Preprocessor)是一种广泛使用的开源服务器端脚本语言,特别适合Web开发。PHP的设计目标是提高可嵌入性,使得开发者可以将PHP代码嵌入HTML源码中,实现动态网页生成。"基于PHP的然之协同...

    PHP 缓存 PHP 缓存

    **缓存**是一种用于暂时存储数据的技术,目的是为了加快数据访问的速度。在现代软件开发中,缓存扮演着极其重要的角色,尤其对于提高Web应用的性能至关重要。通过缓存,我们可以避免重复计算或频繁访问较慢的数据源...

    学习 php 的东西

    在IT行业中,PHP是一种广泛使用的开源脚本语言,尤其在Web开发领域占据着重要的地位。本文将深入探讨PHP以及与之相关的XML技术,基于提供的标题“学习PHP的东西”和描述,我们将围绕PHP语言基础、PHP与ASP的对比、...

    基于PHP实现的WEB图片共享系统(源代码+论文)

    标题中的“基于PHP实现的WEB图片共享系统”指的是一个使用PHP编程语言开发的网络应用程序,其主要功能是提供一个平台让用户能够上传、分享和浏览图片。这个系统可能包含用户注册登录、图片上传、图片预览、图片搜索...

    PHP源码基于PHP实现的WEB图片共享系统(源代码+论文)

    1. **PHP**:PHP(Hypertext Preprocessor)是一种广泛使用的开源通用脚本语言,特别适用于Web开发并可嵌入HTML中。PHP风格灵活,语法简单,无论是简单的脚本还是复杂的Web应用程序均可胜任。 2. **MySQL**:MySQL是...

    数据字典生成器【MYSQL】

    在IT领域,尤其是数据库管理和开发中,数据字典生成器是一种实用工具,能够自动生成这些元数据,帮助开发者和DBA更有效地理解和管理数据库结构。 "数据字典生成器【MYSQL】" 是一款专门针对MySQL数据库设计的数据...

Global site tag (gtag.js) - Google Analytics