【Azure App Service】为部署在App Service上的PHP应用开启JIT编译器

发布时间 2023-08-17 20:25:33作者: 路边两盏灯

问题描述

在App Service for linux上创建一个PHP应用,通过 phpinfo() 查看PHP的扩展设置,发现JIT没有被开启, jit_buffer_size 大小为0.

那么,在App Service的环境中,如何开启JIT呢?

 

问题解答

PHP 8在PHP的内核中添加了JIT编译器,可以极大地提高性能。首先,仅在启用opcache的情况下,JIT才有效,这是大多数PHP安装的默认设置,但应确保opcache.enable在php.ini文件中将其设置为1 。通过opcache.jit_buffer_size 设置JIT。

在应用的 ini 设置文件中添加以下内容,如 phpext.ini 

opcache.enable=1 
opcache.jit_buffer_size=100M
opcache.jit=1255

然后把 phpext.ini 文件与 项目文件一同,上传到App Service的 /home/site/wwwroot 目录中,并为ini设置文件单独放置一个目录为 ini。

当ini设置文件准备好之后,就需要配置App Service应用该配置文件。通过设置 PHP_INI_SCAN_DIR  来实现

PHP_INI_SCAN_DIR="/usr/local/etc/php/conf.d:/home/site/wwwroot/ini"

/usr/local/etc/php/conf.d 是 php.ini 所在的默认目录。 /home/site/ini 是自定义目录,你将在其中添加自定义 .ini 文件。 使用 : 分隔值。

配置页面

重启应用后,通过phpinfo()查看JIT配置是否生效。

 

【END】

 

附录1:php index page

<html>
 <head>
  <title>PHP Info</title>
 </head>
 <body>
 <?php echo '<p>Hello World</p>'; ?> 
 <hr>
 <?php phpinfo();?>
 </body>
</html>

 

 

 

参考资料

如何在PHP8中设置开启JIT : http://www.yinzhongnet.com/925.html

自定义 PHP_INI_SYSTEM 指令 : https://docs.azure.cn/zh-cn/app-service/configure-language-php?pivots=platform-linux#customize-php_ini_system-directives