3

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

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

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

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

PS:我真的是一个PHP新手,所以如果这个问题太愚蠢了,我很抱歉:)

4

1 回答 1

4

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

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

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

于 2010-03-03T06:57:04.003 回答