opcache est utilisé pour mettre en cache l'opcode généré par la compilation du moteur zend, il n'est donc pas nécessaire de le compiler la prochaine fois.
J'ai récemment entendu parler de php jit et j'ai jeté un œil au concept de jit. La description est la suivante :
Compilation JIT (compilation juste à temps), c'est-à-dire compilation juste à temps, au sens étroit signifie qu'un certain morceau de code est compilé lorsqu'il est sur le point d'être exécuté pour la première fois, puis exécuté directement sans compilation. C'est un cas particulier de compilation dynamique.
Quelle est la différence entre le jit et l'opcache de PHP ?
源代码(人认识)->字节码(解释器认识)->机器码(硬件认识)
来看下PHP的执行流程,假设有个a.php文件,不启用opacache的流程如下:
a.php->经过zend编译->opcode->PHP解释器->机器码
启用opacache的流程如下
a.php->查找opacache缓存,如果没有则进行zend编译为opcode并缓存->opacode->PHP解释器->机器码
启用jit的流程如下
a.php->编译->机器码
À l'avenir, seul le code machine sera exécuté sans compilation, ce qui est bien plus efficace
Le concept de JIT vient en fait de Java. En Java, le compilateur JIT est le processus de compilation du bytecode en code machine.
Si PHP et Java sont mappés, alors le processus de compilation de PHP en OpCode est le processus de compilation de Java en bytecode, et par extension, le JIT de PHP est le processus de compilation d'OpCode en code machine.
Pour le dire plus simplement, le programme PHP est compilé dans OpCode puis remis à l'interpréteur PHP pour exécution. Ce processus est toujours un processus d'interprétation et d'exécution. Et s'il est compilé en code machine via JIT, l'efficacité d'exécution du programme peut être considérablement améliorée.
Plusieurs langages de script populairesont déjà leur propre JIT, mais PHP fait encore défaut sur cet aspect. Alors, attendez avec impatience, attendez avec impatience PHP 8