我想知道PHP解释器中的静态(类)字段表示。
例如,在Java中加载类时,静态字段将与该Class对象关联;这意味着运行相同JVM(和相同的类加载器)的两个应用程序将具有某种共享的全局变量;)
我只是想知道,如果我使用某种PHP加速器/操作码缓存,那真正缓存的是什么?它只是编译后的字节码,还是一个VM状态(负责存储类对象)?
这是因为我害怕在请求之间共享静态字段/单例对象等。
P.S。:我真的是一个PHP新手,所以如果问题太愚蠢我很抱歉:)
答案 0 :(得分:4)
操作码缓存不会改变任何内容:每个PHP脚本都由其自己的进程(或线程)执行,与其他脚本隔离。
操作码缓存只会缓存操作码(相当于JAVA的字节码的PHP),并且也不存储与脚本的当前执行无关 - 即不是任何类型的“ VM状态“。
这意味着,对于PHP脚本的每次执行,您的static
变量将存在于一个版本中,即使该脚本并行执行多次;使用或不使用操作码缓存不会改变事物。