0

我一直在寻找这个问题的答案,到目前为止我一直无法找到答案。我的问题是;存储不需要任何动态输入的巨大全局类的最佳方法是什么,它只需要使用一次。

让我们以一个模板类为例:

<?php
class Design_API{
   function loadfile($file){
     //load file here
   }

   // do file manipulation here

   function presentfile(){
      echo($this->file);
   }

}
?>

使用此类作为布局的基本示例。使用它的最佳方式是性能和安全性。是否将其创建为全局实例?将实例存储在会话中;或者干脆把它变成一个静态类。

另外,假设我们使用了一个会话,如果 2 个客户端在同一毫秒访问该站点,php 是否会锁定会话文件,从而强制客户端 2 的 Web 加载需要更长的时间?

4

2 回答 2

3

这个问题有点混乱,无法以一致的方式回答,所以这里有几点:

  • 一个客户端不会阻止另一个客户端,除非他们正在访问共享资源
  • 会话不是不同用户之间共享的资源,忘记这个误解
  • 无论您在哪里存储对象,性能几乎都不会改变
  • 它使不同请求和用户之间的差异更小,因为请求之间没有共享资源
  • 首先编写你的意思和最可维护的代码,稍后在证明它很慢时优化它以提高性能(它可能不会)
  • 尽可能避免全局变量
  • 不要在会话中存储不属于那里的东西,比如代码
  • 尽量避免static类,它们会导致代码耦合,应该减少
  • static类不一定更快
于 2012-11-22T14:29:32.543 回答
2

处理这个问题的最好方法是使这个类成为一个 Singleton 类并使用静态方法来实例化它。

在会话中存储对象将涉及序列化和反序列化,这对性能非常不利。此外,如果您在类中存储任何资源,则它们无法被序列化。

于 2012-11-22T14:27:38.543 回答