我是php的新手,但在其他Web技术中,您可以在页面实例之间共享对象.例如,在java jsp页面中,您可以轻松拥有作为整个服务器实例的静态类存在的类.如何在PHP中执行此操作?
我没有引用会话变量(至少我不这么认为).这更多是出于资源池的目的(可能是要共享的套接字或数据库连接等).因此,需要在后续加载之间共享整个类,而不仅仅是我可以在会话中存储的一些原始变量.
我也研究过做单例类,但我相信这个类只在同一页面内共享,而不是在页面之间共享.
为了使事情更加清晰,我正在寻找可以帮助我分享连接到服务器的socket的插件,以便加载该页面的所有用户使用相同的套接字并且不打开新的一个.
这有点难以回答,可能不是您正在寻找的.
PHP建立在"无共享"架构之上.如果您的应用程序需要某种类型的状态,则必须通过其他方式执行此操作.
首先,我建议调查问题的核心..你真的需要它吗?如果你认为PHP应用程序可能会死(并且丢失状态)是否可以丢失数据?
如果你必须保持状态,即使在应用程序死亡或其他情况下,你应该假设把数据放在MySQL中的最佳位置.PHP旨在作为业务逻辑的薄层,因此我强烈推荐这一点.
如果您不关心重启后丢失数据,那么您正在寻找的问题域可能是缓存.我建议查看memcached或者如果你在一台机器上,apc.APC肯定会在一台机器上为您使用Apache,但如果您丢失了数据,您仍然需要编写应用程序代码.
如果您担心基础数据存储区(MySQL)太慢,但仍需要在重新启动后维护数据,则应该考虑这两个系统的组合.您始终可以从缓存中推送和提取数据,但只有在更新时才将数据发送到Mysql.
如果数据纯粹是用户或会话绑定,您可能只想查看会话系统.
我个人开发了一个相当大的多租户应用程序,虽然它是一个相当复杂的应用程序,但我从来没有需要你正在寻找的真实状态.
更新:对不起,我没有看到有关共享套接字的说明.您将需要一个单独的守护程序来处理这个问题,也许如果您可以进一步解释您的问题,可能还有其他方法.这是什么类型的插座?
Web服务的Java和Web服务的解释语言(如PHP和Perl)之间存在根本区别.在Java中,您的Web服务器将具有维护状态的操作环境(即Tomcat).使用解释型语言,对Web服务器的请求通常会生成一个新的Web服务器线程,从而为该线程(在本例中为PHP环境)加载新的操作环境.
因此,在PHP中,没有页面实例的概念.对Web服务器的每个请求都是一个全新的开始.所有类都被重新加载,因此没有类共享的概念,也没有资源池的概念,除非它是在外部实现的.
因此,实际上不可能在Web请求之间共享套接字.