【问题标题】:PHP accelerators and static fieldsPHP 加速器和静态字段
【发布时间】:2010-03-03 06:50:04
【问题描述】:

我想了解 PHP 解释器中的静态(类)字段表示。

例如,当您在 Java 中加载一个类时,静态字段将与该 Class 对象相关联;这意味着运行相同 JVM(和相同类加载器)的两个应用程序将具有某种共享全局变量;)

我只是想知道,如果我使用某种 PHP 加速器/操作码缓存,那么真正缓存的是什么?是只是编译好的字节码,还是一段VM状态(负责存储类对象)?

这是因为我害怕请求之间共享静态字段/单例对象等。

P.S.:我真的是 PHP 新手,所以如果问题太愚蠢,我很抱歉:)

【问题讨论】:

    标签: php class static state accelerator


    【解决方案1】:

    操作码缓存不会改变任何东西:每个 PHP 脚本都由自己的进程(或线程)执行,与其他进程隔离。

    操作码缓存只会缓存操作码(Java 字节码的 PHP 等价物),并且不会存储与当前脚本执行无关的操作码——即不是任何类型的“虚拟机状态”。

    这意味着您的 static 变量将在每次执行 PHP 脚本时存在一个版本,即使该脚本并行执行多次;使用或不使用操作码缓存不会改变任何事情。

    【讨论】:

    • 非常感谢,我现在放心了:)
    • 不客气 :-) (我要补充一点,如果操作码缓存确实改变了一些重要的东西,那将是主要问题)
    猜你喜欢
    • 2017-12-26
    • 2012-03-16
    • 2014-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-16
    • 1970-01-01
    相关资源
    最近更新 更多