PHP常驻内存与单例模式
2015-12-03 23:44
656 查看
也许有经验的PHP程序员最感到痛苦的地方是PHP的解释运行机制。这种运行机制使得每个PHP页面被解释执行后,所有的相关资源都会被回收。也就是 说,PHP在语言级别上没有办法让某个对象常驻内存。在PHP中,所有的变量都是页面级的,无论是全局变量,还是类的静态成员,都会在页面执行完毕后被清 空。以JSP为例,在JSP中,Java Bean的scope有四种有效值:Page、Application、Session、Request,分别对应页面、程序、会话、哀求四种生存期。但 在PHP中,只有Page一种生存期。
在PHP中,假如需要在页面之间共享数据,需要手动将变量保存到预定义的全局变量$GLOBALS或$_SESSION中。PHP会将这些变量保存在某个 文件中,以便下次执行页面时读取。但是,这种方式存在着极大的限制,除了效率的低下外,它还无法保存引用外部资源的变量,例如文件、Socket、数据库 连接等,而正是这些资源最需要被缓存。
这导致了许多高级的模式和技术无法使用。例如,即使是最简朴的Singleton模式也无法在PHP中被应用。虽然可以使用PHP写出Singleton 的代码,但是由于PHP中没有真正全局的static变量,所以每次页面被执行时,都会重新建立新的对象,这样也就完全失去了Singleton的意义。 这也导致复杂的OR Mapping技术难以应用,因为没有对象的缓存机制,OR Mapping的开销已经使这种技术失去了意义。
http://blog.csdn.net/jungsagacity/article/details/7618587
在PHP中,假如需要在页面之间共享数据,需要手动将变量保存到预定义的全局变量$GLOBALS或$_SESSION中。PHP会将这些变量保存在某个 文件中,以便下次执行页面时读取。但是,这种方式存在着极大的限制,除了效率的低下外,它还无法保存引用外部资源的变量,例如文件、Socket、数据库 连接等,而正是这些资源最需要被缓存。
这导致了许多高级的模式和技术无法使用。例如,即使是最简朴的Singleton模式也无法在PHP中被应用。虽然可以使用PHP写出Singleton 的代码,但是由于PHP中没有真正全局的static变量,所以每次页面被执行时,都会重新建立新的对象,这样也就完全失去了Singleton的意义。 这也导致复杂的OR Mapping技术难以应用,因为没有对象的缓存机制,OR Mapping的开销已经使这种技术失去了意义。
http://blog.csdn.net/jungsagacity/article/details/7618587
相关文章推荐
- ThinkPHP导出EXCEL
- 关于php_curl无法载入的问题的解决
- ubuntu 12.04 php5.3 降级为 5.2
- PHP组合模式
- 64位win2003/win2008系统IIS6.0/7.5配置PHP的方法
- iis7.5安装配置php环境详细清晰教程,三步实现【图文】
- 敲-PHP与MySQL,JSON
- mkyaffs2image的制作方法
- 中小企业集群ntpd服务搭建
- 中小企业集群ntpd服务搭建
- 15个实用的PHP正则表达式
- thinkphp的一些笔记
- 织梦首页php301重定向
- 今天debug thinkphp的感想
- PHP基础--变量
- ThinkPHP框架五对数据的操作和条件查询
- Laravel 单元测试
- thinkphp3.2之url模式和后台模块之间的关系
- SFTP使用资料整理及例子
- 解决thinkphp设置session周期无效的问题