想问一下在php中实例化一个对象的性能和内存占用
在我的应用程序的每个 php 文件中,我都包含一个连接到数据库的文件。
$db->DB::getInstance();
$db->connect('all my credentials');
这是我的数据库类中的 getInstance() 函数。
//singleton database instance
public static function getInstance() {
if (!self::$Instance) {
self::$Instance = new DB();
}
return self::$Instance;
}
目前一切顺利。但我担心性能问题,如是否可以改进、可能的缺陷等。
我研究并发现单例实例可以帮助节省内存。如果它已经被实例化,它将重用该对象。我说得对吗?
我的确切问题是
例如如果我有 10 个用户访问该脚本,是否意味着该对象将被实例化 10 次?发生这种情况时,它会不会给我的内存使用量增加 10 倍? -> 这正是我感兴趣的
感谢任何专家建议。
最佳答案
与所有性能调整一样,您应该衡量您所做的事情,而不是盲目地执行一些您不完全理解的巫术仪式。当您在 $_SESSION
中保存对象时,PHP 将捕获对象状态并从中生成文件(序列化)。在下一次请求时,PHP 将创建一个新对象并使用该状态重新填充它。这个过程比仅仅创建对象要昂贵得多,因为 PHP 必须进行磁盘 I/O,然后解析序列化数据。这必须在读取和写入时发生。
一般来说,PHP 被设计为无共享架构。这有其优点和缺点,但试图以某种方式回避它通常不是一个好主意。
关于php - 在 php 中实例化对象时的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10478431/