php 扩展开发 从入门到放弃(一)

🏷️ 365beat版app ⏱️ 2025-08-21 12:45:25 👨‍🔧 admin 👁️ 7624 ⚡ 922
php 扩展开发 从入门到放弃(一)

从入门到放弃

“放弃” 一词常常是令人沮丧的,而在程序员的世界里,为何遍地都是“入门到放弃”、“从删库到跑路”系列

我认为是程序员的自我调侃。程序开发在很多情况下是枯燥无味的,使用消极的话语也就是反话,来激励自己:“从入门到不要轻易放弃!”

什么是 php 扩展(extensions)为 php 提供扩展功能。如:通过 ip 查询所在地址、通过手机号查询归属地,这些业务上需要的功能是 php 不自带的,php 要在一个海量数据的文件中获取需要的数据,效率相对是比较低的。

为什么要用 php 扩展我认为首要原因是性能。php 扩展使用 c 语言编写,众所周知 c 是更加底层的语言,效率要比 php 高出许多。(那我们为什么要用 php?因为高级语言封装了更多的功能,能极大提高开发效率。所以在开发效率与执行效率之间,通常是要做取舍的。)

其次做一些扩展开发,也能让我们更加深入的了解 php(php的实现、生命周期等),我爱 php,毕竟它是世界上最好的语言。

如何查看已经安装的 php 扩展web 方式:

代码语言:javascript代码运行次数:0运行复制php -v2.获取 php 源码

代码语言:javascript代码运行次数:0运行复制git clone -b PHP-7.1.23 git://github.com/php/php-src.git3.生成 hello 扩展

代码语言:javascript代码运行次数:0运行复制cd php-src/ext/

./ext_skel --extname=hello

cd hello4.编辑 hello 扩展

vi config.m4 # 小于 php7 的需要修改该文件,将 3行 dnl 注释去除,php7 以上的版本忽略该步骤

代码语言:javascript代码运行次数:0运行复制PHP_ARG_ENABLE(hello, whether to enable hello support,

dnl Make sure that the comment is aligned:

[ --enable-hello Enable hello support])vi hello.c

代码语言:javascript代码运行次数:0运行复制PHP_FUNCTION(hello)

{

php_printf("hello world");

}

const zend_function_entry hello_functions[] = {

PHP_FE(hello, NULL) /* 添加这行 */

PHP_FE(confirm_hello_compiled, NULL) /* For testing, remove later. */

PHP_FE_END /* Must be the last line in hello_functions[] */

};5.编译安装

在 ext/hello/ 下执行以下命令

代码语言:javascript代码运行次数:0运行复制/usr/bin/phpize

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

sudo make

sudo make install注:

1) phpize 用绝对路径,避免在 /usr/bin/ 下没有这个命令,你的路径可能是类似: /usr/local/php7/bin/phpize

2) configure 添加 php-config 的路径参数

6.安装 hello 扩展

vi /etc/php.ini 添加行

代码语言:javascript代码运行次数:0运行复制extension=hello.so重启 php,如果是 apache 则重启 httpd,如果是 nginx + php-fpm 则重启 php-fpm,让扩展生效

7.试试新出炉的 hello() 函数吧

代码语言:javascript代码运行次数:0运行复制php -r "hello();echo PHP_EOL;";

相关资讯

美好时光海苔4.5g
365beat版app

美好时光海苔4.5g

📅 07-16 🔧 admin
英雄无敌手游铁人好还是长角恶魔好
365beat版app

英雄无敌手游铁人好还是长角恶魔好

📅 08-09 🔧 admin
foxmail邮箱设置导出或导入邮件的方法
365beat版app

foxmail邮箱设置导出或导入邮件的方法

📅 08-14 🔧 admin