动手实践,Linux 安装 php-vld 全过程实录

560 阅读3分钟

这是我参与8月更文挑战的第29天,活动详情查看:8月更文挑战

开篇三问

对于一些新手小白可能会发问:VLD 是什么?

答:vld 是 PECL extensions 扩展之一 ,也就是我们在 php.ini 中 extension=php_mysql.dll 这种,它的主要功能是方便我们查看 php 底层编译的 opcode。

紧接着又有第二问:opcode 是什么?

答:当解释器完成对脚本代码的分析后,便将它们生成可以直接运行的中间代码,也称为操作码(Operate Code,opcode)。Opcode cache 的目地是避免重复编译,减少 CPU 和内存开销。如果动态内容的性能瓶颈不在于 CPU 和内存,而在于 I/O 操作,比如数据库查询带来的磁盘 I/O 开销,那么 opcode cache 的性能提升是非常有限的。但是既然 opcode cache 能带来 CPU 和内存开销的降低,这总归是好事。  

直击灵魂的第三问:为什么要使用 Opcode?  

这得从 PHP 代码的生命周期说起,请求 PHP 脚本时,会经过五个步骤,如下图所示:

Zend 引擎必须从文件系统读取文件、扫描其词典和表达式、解析文件、创建要执行的计算机代码(称为 Opcode),最后执行 Opcode。每一次请求 PHP 脚本都会执行一遍以上步骤,如果 PHP 源代码没有变化,那么 Opcode 也不会变化,显然没有必要每次都重行生成 Opcode,结合在 Web 中无所不在的缓存机制,我们可以把 Opcode 缓存下来,以后直接访问缓存的 Opcode 岂不是更快,启用 Opcode 缓存之后的流程图如下所示:

Linux 安装过程

安装查看 opcode 利器 vld,记录一下开发机安装 php-vld 过程。

一、准备工作

Linux 开发机一台;

Nginx、PHP 已安装。

二、安装 php vld 扩展

2.1、下载文件

下载:pecl.php.net/package/vld

或者 wget 方式:wget pecl.php.net/package/get…

2.2、解压文件

tar zxvf vld-0.14.0.tgz

如果这一步骤出错,需安装 gcc(yum -y install gcc),然后再试。

cd vld-0.14.0

2.3、phpize

依次执行 phpize,用于构建 pecl 扩展

这一步骤如出错,需安装 php-devel

yum install php-devel

2.4、configure

查找 php-config 所在位置:

find / -name php-config

设置 php-config 的路径与上面保持一致:

./configure --with-php-config=/usr/bin/php-config --enable-vld

2.5、编译和安装

make && make install

至此安装完成。

三、添加新扩展配置

3.1、编辑 php.ini,添加 vld.so 新扩展

vim /usr/local/matrix/lib/php.iniextension=vld.so

3.2、重启 php-fpm 生效

service php-fpm reload

查看 phpinfo() 信息,vld 扩展添加成功。

四、试用

编写个简单的例子试一下

<?php
   echo "Hello World";
   $a = 1 + 1;
   echo $a;

试用

php -dvld.active=1 -dvld.execute=0 test.php
(运行test.php的时候,使用vld插件,不执行,只显示opcode)

- END -

作者:架构精进之路,十年研发风雨路,大厂架构师,CSDN 博客专家,专注架构技术沉淀学习及分享,职业与认知升级,坚持分享接地气儿的干货文章,期待与你一起成长。
关注并私信我回复“01”,送你一份程序员成长进阶大礼包,欢迎勾搭。

Thanks for reading!