前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >php 扩展开发 从入门到放弃(一)

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

作者头像
lukachen
发布2023-10-22 15:35:12
1430
发布2023-10-22 15:35:12
举报
文章被收录于专栏:LukaChen BlogLukaChen Blog

从入门到放弃 “放弃” 一词常常是令人沮丧的,而在程序员的世界里,为何遍地都是“入门到放弃”、“从删库到跑路”系列 我认为是程序员的自我调侃。程序开发在很多情况下是枯燥无味的,使用消极的话语也就是反话,来激励自己:“从入门到不要轻易放弃!”

什么是 php 扩展(extensions)

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

为什么要用 php 扩展

我认为首要原因是性能。php 扩展使用 c 语言编写,众所周知 c 是更加底层的语言,效率要比 php 高出许多。(那我们为什么要用 php?因为高级语言封装了更多的功能,能极大提高开发效率。所以在开发效率与执行效率之间,通常是要做取舍的。) 其次做一些扩展开发,也能让我们更加深入的了解 php(php的实现、生命周期等),我爱 php,毕竟它是世界上最好的语言。

如何查看已经安装的 php 扩展

  • web 方式:<?php phpinfo();
  • cli 方式:php -m

开发第一个扩展 hello(演示的 php 版本是 7.1.23)

1.查看 php 版本

代码语言:javascript
复制
php -v

2.获取 php 源码

代码语言:javascript
复制
git clone -b PHP-7.1.23 git://github.com/php/php-src.git

3.生成 hello 扩展

代码语言:javascript
复制
cd php-src/ext/
./ext_skel --extname=hello
cd hello

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

代码语言:javascript
复制
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
复制
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
复制
/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
复制
extension=hello.so

重启 php,如果是 apache 则重启 httpd,如果是 nginx + php-fpm 则重启 php-fpm,让扩展生效

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

代码语言:javascript
复制
php -r "hello();echo PHP_EOL;";
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-06-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是 php 扩展(extensions)
  • 为什么要用 php 扩展
  • 如何查看已经安装的 php 扩展
  • 开发第一个扩展 hello(演示的 php 版本是 7.1.23)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档