以下内容是本人学习过程中的笔记或者心得,如果有什么建议或者意见请在评论中提醒我,谢谢,这篇文章我会定期更新,由浅到深的分享我学PHP扩展历程

或者在学习中有什么问题欢迎交流

1.去PHP官网下载一个源码包,然后解压到某个目录

2.进入源码目录中的ext目录中

3.执行./ext_skel --extname=myext(这是扩展的名字) 生成扩展框架 [ps:如果ext_skel无法执行,请查看ext_skel文件是否有可执行权限]

4.编写扩展函数

  a).我们打开myext.c文件,里面有一些函数,包括

    PHP_FUNCTION(),这是编写扩展中函数逻辑的注册函数,每一个扩展函数对应一个PHP_FUNCTION(扩展函数名){}

    下面四个函数是扩展的c文件中基本都有的,这些在PHP的整个生命周期中需要调用的,具体的请看:

    PHP_MINIT_FUNCTION(),这个函数在该扩展被载入时调用

    PHP_RINIT_FUNCTION(),PHP初始化执行脚本的基本环境,在文件请求到达后,文件编译前执行该函数,例如记录请求开始时间,结合请求结束时间,可以记录下处理请求所花费的时间

    PHP_RSHUTDOWN_FUNCTION(),一般脚本执行结束(执行到末尾或者exit,die退出后)后调用该函数

    PHP_MSHUTDOWN_FUNCTION(),SAPI生命周期结束后,一般注销一些持久化的资源

  b).我们来编写一个自己的函数

    在myext.c文件中添加

PHP_FUNCTION(myfunction){
long x,y,z;
int argc =ZEND_NUM_ARGS(); if(zend_parse_parameters(argc TSRMLS_CC,"ll",&x,&y)==FAILURE)
return;
z = x * y;
RETURN_LONG(z);
}

    然后在myext.c文件中的zend_function_entry myext_functions里面添加PHP_FE(myfunction,NULL) 注意后面不带逗号或者分号,需要换行

    将config.m4中下面代码前的dnl去掉

      dnl PHP_ARG_WITH(myext, for myext support,
      dnl [ --with-myext Include myext support])

    在扩展目录下执行phpize命令生成扩展的配置工具

    然后执行./configure -with-php-config=/usr/bin/php-config && make && make install 编译和安装,成功后在PHP扩展目录中可以看到编译好的myext.so文件

    然后在php.ini文件中添加extension=myext.so

    重启一下服务,测试myfunction(4,5)的结果是否输出20

  

在Linux下编写php扩展的更多相关文章

  1. Linux下编写-makefile-详细教程(跟我一起写-Makefile-Markdown整理版)

    目录 概述 关于程序的编译和链接 Makefile 介绍 Makefile的规则 一个演示例子 make是怎样工作的 makefile中使用变量 让make自己主动推导 另类风格的makefile 清 ...

  2. linux下安装opcache扩展

    linux下安装opcache扩展   参考:http://www.php.net/manual/zh/opcache.installation.php 1 2 3 4 5 6 7 wget http ...

  3. 总结 Linux 下安装 PHP 扩展步骤

    总结一下 Linux 下安装 PHP 扩展步骤,这里以安装 PHP 的 redis 扩展为例. 一.拿到扩展包下载地址,下载扩展包 pecl 上搜索 redis wget http://pecl.ph ...

  4. linux 下安装php扩展

    linux下安装php扩展 步骤: 1.在扩展解压包目录执行 phpize 2.执行 ./configure --with-php-config=/usr/local/php/bin/php-conf ...

  5. [转] Linux下编写脚本实现Daemon

    在Linux(以Redhat Linux Enterprise Edition 5.3为例)下,有时需要编写Service.Service也是程序,一般随系统启动用户不干预就不退出的程序,可以称为Se ...

  6. Ubuntu\Linux 下编写及调试C\C++

    一.在Ubuntu\Linux 下编写及调试C\C++需要配置基本的环境,即配置gcc编译器.安装vim编译器,具体配置安装步骤我在这里就不多说了. 二.基本环境配置完了我们就可以进入自己的程序编写了 ...

  7. Linux下编写 makefile 详细教程

    原文地址: https://www.cnblogs.com/mfryf/p/3305778.html 近期在学习Linux下的C编程,买了一本叫<Linux环境下的C编程指南>读到make ...

  8. linux下安装PHP扩展memcache

    公司的服务器 CentOS 7.5,PHP 5.6 下面都是最新的版本(支持到PHP5.6) 如需php7  下支持memcache扩展,请移步   https://www.cnblogs.com/h ...

  9. Linux下编写和加载 .ko 文件(驱动模块文件)

    一..ko 文件介绍 .ko文件是kernel object文件(内核模块),该文件的意义就是把内核的一些功能移动到内核外边, 需要的时候插入内核,不需要时卸载. 二.优点 (1)这样可以缩小内核体积 ...

随机推荐

  1. openstack私有云布署实践【14.1 登录页dashboard-controller(科兴环境)】

    2台kxcontroller安装组件 # yum install openstack-dashboard -y   修改一样的配置 vi /etc/openstack-dashboard/local_ ...

  2. openstack私有云布署实践【4.1 上层代理haproxy配置 (科兴环境)】

    官方文档上的高可用配置,它推荐的是使用haproxy的上层代理来实现服务组件的主备访问.或者负载均衡访问   一开始我也是使用haproxy来做的,但后来方式改了   测试环境:haproxy + n ...

  3. C语言 · 数的统计

    问题描述 在一个有限的正整数序列中,有些数会多次重复出现在这个序列中. 如序列:3,1,2,1,5,1,2.其中1就出现3次,2出现2次,3出现1 次,5出现1次. 你的任务是对于给定的正整数序列,从 ...

  4. day01(RESTful Web Service、SVN)

    今日大纲 搭建SSM环境 基于SSM环境实现用户管理系统 学习RESTful Web Service 学习SVN 统一开发环境 JDK1.7 32? 64? -- 64 Eclipse 使用4.4.1 ...

  5. 认识<meta>

    概要:在查看网页源码的时候,经常发现有<meta>标签存在,于是查了一下它的作用,发现有很多功能.下面就简单的阐述一些常见的功能. 一[什么是<meta>标签] meta,即m ...

  6. 判断浏览器是否支持html5和css3属性

    本文章内容是由一个前辈写的. CSS3特有的属性moz-Transform //判断是否具有相应属性 testProps: function (props) { var i; for (i in pr ...

  7. CF 602B Approximating a Constant Range

    (●'◡'●) #include<iostream> #include<cstdio> #include<cmath> #include<algorithm& ...

  8. POJ 2240 Arbitrage(SPFA+邻接矩阵)

    ( ̄▽ ̄)" #include<iostream> #include<cstdio> #include<cmath> #include<algori ...

  9. AOE 网络

    1.定义 如果在无向环的带权有向图中 - 用有向边表示一个工程中的活动 - 用边上的权值表示活动的持续时间 - 用顶点表示事件 则这样的有向图叫做用边表示活动的网络,简称AOE网络 AOE在工程方面非 ...

  10. 转载–移动互联网终端的touch事件,touchstart, touchend, touchmove

    转载请注明: 转载自WEB前端开发(www.css119.com)-关注常见的WEB前端开发问题.最新的WEB前端开发技术(webApp开发.移动网站开发).最好的WEB前端开发工具和最全的WEB前端 ...