PHP - 静态类和缓存类

时间:2014-04-16 05:00:37

标签: php oop caching

以下代码是我用来缓存 Java 中的对象的方式。

class Account{
    private static ArrayList<Account> accounts = new ArrayList<Account>(); //Array that holds Account objects
    private String username; //Unique Name or Username

    public Account(String username) { // constructor
        this.username = username;
        Account.accounts.add(this); //Add object to accounts Array
    }

    public String getUsername() { 
        return this.username; // Return username
    }

    public Account getAccount(String username) { //Get object "Account" with username
        for (Account acc: Account.accounts) { //Foreach loop that loop over all accounts from the Array
            if (acc.getUsername() == username) return acc; // Return Account object if given username == object's username
        }
        return null;
    }
}

我对它进行了评论,如果您不理解 Java ,那么它将是有意义的,但Java OOP与PHP OOP类似。

从上面的 Java 代码中我可以保存数组上的所有对象,因此它不会一直查询数据库。

1)我想知道我是否可以使用 PHP 做类似的事情来加速代码和缓存类。如果有可能,请你给我举个例子。如果不是最好的方法是什么?

2)面向对象编程时使用哪些好的做法可以降低内存使用率?

提前致谢

1 个答案:

答案 0 :(得分:1)

Java应用程序和PHP应用程序之间的最大区别在于,Java通常是一个持续运行的程序,同时处理多个传入连接,而PHP实例由托管Web服务器为每个单独的请求启动和拆除。这意味着您加载的任何类或您实例化的对象或您指定的变量只有一个毫秒的生命周期(在一个相当快的应用程序中)。静态类属性与Java中的相同,但是,整个应用程序在几毫秒后就会被拆除,因此这不会作为长期缓存工作。更重要的是,每个单独的HTTP请求都是它自己的独立线程,因此在一个线程中分配内容并不会使其在任何其他同时或后续线程中可见。

要缓存某些跨请求,您需要一个外部数据存储。为此,您有很多选择,具体取决于您最适合的套房: