LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

php实现多用户共享数据,类似jsp的application---ATHER Shu(A.S)的Bl

admin
2012年6月7日 8:53 本文热度 3543
需求:想要采用AMFPHP实现,多个flash端push数据到php server,这些数据都能保存在server端并且被多个flash端都能访问到,即类似jsp中的application。

结果发现php中并未有提供application,而只有session,而session只是代表一个用户会话,而且用户关闭浏览器就失效,既不能实现persistence,更不能实现多用户share。

为什么php没有提供application呢?
关于此,给大家推荐一个好文以加深理解:
PHP沉思录--工作模型:http://www.bloggern.com/1557.html

1、一开始想用php server端类里面写个static变量,结果行不通。


class TestStatic
{
    private static $i = 0;
    function getI()
    {
        self::$i++;
        return self::$i;
    }
}

结果用amfphp browser查看,每次都返回1。
引申开来,普通php中也无法用static来实现多用户共享数据。


<html>
<?php
class TestStatic
{
    private static $i = 0;
    static function getI()
    {
        self::$i++;
        return self::$i;
    }
}
echo "i的值是 ".TestStatic::getI();
?>
</html>

以上程序是没什么实际意义的,每次都返回1。

原因应该很简单,因为php是个纯解释性的脚本语言,每次浏览器去访问一个php文件,都会重新解释一遍该php文件,一旦解释完成就清空全部此过程中产生的数据、资源等,因此静态不静态只是在这个解释的过程中才有效果,一旦解释完成,就没有任何意义了。

同时,AMFPHP中“每Call一次Method,一个新Object Instance产生。”
来源:Luar's Flash Playground - AMFPHP在Persistent Layer探索

2、sesstion行不通,原因前面有讲。

3、那就只有保存文件或者保存数据库咯。
3.1、搜到个好帖子,有个哥们写的用文件的方式实现多用户共享,
php自写application功能相当于asp中的application

3.2、帖子中也有人提出用mysql的memory表实现内存共享,这个对于jsp类似的application对象完全可行,当然这个可能会随时崩溃,mysql每次启动都会清空数据,只留下一个空表。
关于memory(以前叫heap引擎)的一些资料:
Mysql Memory引擎的简单应用
Mysql的内存表(Memory engine)的问题

4、另外搜到了篇文章: 采用memcache缓存,不过这需要安装memcache扩展。
MYSQL内存(MEMORY)表与Memcache访问速度测试。

该文章在 2012/6/7 8:53:45 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved