PHP池功能(不仅仅是数据库连接)
是否可以在PHP中汇集数据或功能 我编写的PHP代码将唤醒以处理响应、加载函数、打开数据库连接、创建对象、初始化它们,然后在处理响应后0.01秒后消失,留下下一个请求重新加载、解析并再次运行相同的内容 这是不合情理的,我发现没有功能/数据/对象池会让我的很多工作失去价值。例如,我可以编写类,发现它们在每个请求中都被重新初始化——我试图开发一个有意义的对象结构有什么意义PHP池功能(不仅仅是数据库连接),php,connection-pooling,pooling,object-pooling,Php,Connection Pooling,Pooling,Object Pooling,是否可以在PHP中汇集数据或功能 我编写的PHP代码将唤醒以处理响应、加载函数、打开数据库连接、创建对象、初始化它们,然后在处理响应后0.01秒后消失,留下下一个请求重新加载、解析并再次运行相同的内容 这是不合情理的,我发现没有功能/数据/对象池会让我的很多工作失去价值。例如,我可以编写类,发现它们在每个请求中都被重新初始化——我试图开发一个有意义的对象结构有什么意义 因此:如何编写PHP来共享数据和功能?PHP中没有一种解决方案池或持久状态,它没有Java那样的应用程序状态,它或多或少遵循无状
因此:如何编写PHP来共享数据和功能?PHP中没有一种解决方案池或持久状态,它没有Java那样的应用程序状态,它或多或少遵循无状态协议,即HTTP。您可以做的是:
- 创建到数据库的持久连接(即,如果使用相同的参数调用它们,它们将被重用,它们不会神奇地存在,但可以避免实际连接的开销)
- 将对象存储在会话中以保持计算状态(它们将被序列化,并在下一个请求中取消序列化)
- 将需要大量一次性初始化的工作路由到独立于Web服务器(gearman服务器和workers)运行的守护进程
- 但最后,如果应用程序需要全局状态,那么PHP可能不是正确的解决方案
PHP的这种暂时状态有好的一面。如果请求有问题,系统崩溃不会对下一次连接产生任何不利影响。对我来说似乎更稳定。PHP几乎从来都不是瓶颈。我们的服务器在峰值时刻每秒处理数百个请求。这些要求也不是很小。这似乎不合逻辑,但PHP实际上非常快。您还可以使用APC缓存来缓存预编译的PHP文件,使其速度更快。然后,您可以使用MemCache来存储数据,这样任何查询结果和类似的数据都可以轻松缓存,而不必依赖MySQL的次优查询缓存。“但最后,如果您的应用程序需要全局状态,可能PHP不是正确的解决方案”是的。。。我希望不是这样的。。。但是非常有用,谢谢。所以-我可以使用APC缓存来保存一组我通常使用include加载的函数。。。这让人松了一口气。您不需要从PHP主动控制APC缓存。APC可以自动保存这些文件,因此当您包含它们时,您可以从缓存中获取预编译版本,而不是从磁盘获取纯文本版本。