Home >php教程 >php手册 >php没有实现快捷的 后台常驻的信息?

php没有实现快捷的 后台常驻的信息?

WBOY
WBOYOriginal
2016-06-06 19:45:571122browse

【也许有经验的PHP程序员最感到痛苦的地方是PHP的解释运行机制。这种运行机制使得每个PHP页面被解释执行后,所有的相关资源都会被回收。也就是说,PHP在语言级别上没有办法让某个对象常驻内存。在PHP中,所有的变量都是页面级的,无论是全局变量,还是类的静

【也许有经验的PHP程序员最感到痛苦的地方是PHP的解释运行机制。这种运行机制使得每个PHP页面被解释执行后,所有的相关资源都会被回收。也就是说,PHP在语言级别上没有办法让某个对象常驻内存。在PHP中,所有的变量都是页面级的,无论是全局变量,还是类的静态成员,都会在页面执行完毕后被清空】

【在PHP中,如果需要在页面之间共享数据,需要手动将变量保存到预定义的全局变量$GLOBALS或$_SESSION中。PHP会将这些变量保存在某个文件中,以便下次执行页面时读取。但是,这种方式存在着极大的限制,除了效率的低下外,它还无法保存引用外部资源的变量,例如文件、Socket、数据库连接等,而正是这些资源最需要被缓存】

【即使是最简单的Singleton模式也无法在PHP中被应用。虽然可以使用PHP写出Singleton的代码,但是由于PHP中没有真正全局的static变量,所以每次页面被执行时,都会重新建立新的对象,这样也就完全失去了Singleton的意义。】

好不容易下决心选学php,居然遇到这样的缺漏
作为很多应用考验的php,很不应该啊:

既然是应用,就需要很多台常驻的信息需要高效地被存取(asp的session是构建web应用最常用的)

设计php的人,这点需求都想不到?比如:

现在游戏厅的3个房间有人在玩了,第4个人刷新页面,应该也能看到3个房间有人了

当然,可能与php最初是cgi模式有关,每次解释完一个页面,解释器就退出了,自然无法实现台常驻的信息。

但是,现在都有fastcgi、isapi,解释器可以常驻后台了,实现后台常驻的信息也就不难了。

作为应用这么多的语言、fastcgi出来这么久,还没实现台常驻的信息,就很不应该了

 

当然,可以同样文件、数据库、memcache系统来实现内台常驻的信息,但是间接了,环节多了,效率自然也打折扣了

当然,像asp解释器的session,因为是在解释器进程的内存里,多进程、多服务器共享session反而困难了,往往反而不得不借助于数据库了

 

很多优秀的语言总是差那么一点点,如mssql的T-SQL,居然只有top n没有skip m!最近的sql2012据说才开始支持类似skip m的功能。sql2005开始有row_number()能达到类似的效果,但是性能略低。sql2000的分页,就只能靠多次top的倒腾来实现!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn