php - 在 php 中实例化对象时的性能

标签 php performance memory

想问一下在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/

相关文章:

Android:内存不足错误

php - 如何显示 mysql 数据库中的 4 行,然后使用下一个按钮在 PHP 中显示下 4 行

MySQL:我应该如何起草这个数据库?

c# - 在多个大文本文件中搜索多个字符串的最快方法

caching - Nginx 内容缓存导致 Docker 内存峰值

PHP 允许的内存大小

php - 如何在用户按下按钮后将进度更新从 PHP 推送到页面?

php - 在选择期间从 MYSQL 中删除空值

javascript - PHP、JS、HTML 和 CSS 文件如何在同一页面上协同工作?

java - Java 是否适合 Multi-Tenancy SAAS 架构?