php扩展开发入门demo示例

本文实例讲述了php扩展开发。分享给大家供大家参考,具体如下:

一、进入php源码包,找到ext文件夹

cd /owndata/software/php-5.4.13/ext

文件夹下放的都是php的相关扩展模块

二、生成自己的扩展文件夹和相关文件

php支持开发者开发自己的扩展,提供了ext_skel骨架,用来构建扩展基本文件

./ext_skel --extname=myext

运行完成后,会在ext目录下生产一个myext扩展目录

三、编写一个hello world简单测试扩展

cd myext

1.编辑myext目录下的config.m4文件

dnl PHP_ARG_WITH(myext, for myext support,
dnl Make sure that the comment is aligned:
dnl [ --with-myext       Include myext support])

将上面这段改成

PHP_ARG_WITH(myext, for myext support,

[ --with-myext       Include myext support])

2.编辑php_myext.h文件

修改php_myext.h,看到PHP_FUNCTION(confirm_myext_compiled); 这里就是扩展函数声明部分,可以增加一

PHP_FUNCTION(myext_helloworld);

3.编辑myext.c文件在这个里面增加一行PHP_FE(myext_helloworld,  NULL)

const zend_function_entry myext_functions[] = {
    PHP_FE(confirm_myext_compiled, NULL)      /* For testing, remove later. */
    PHP_FE(myext_helloworld, NULL)
    PHP_FE_END   /* Must be the last line in myext_functions[] */
};

最后在文件末尾加入myext_helloworld执行代码

PHP_FUNCTION(myext_helloworld)
{
    char *arg = NULL;
  int arg_len, len;
  char *strg;
  if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &arg, &arg_len) == FAILURE) {
    return;
  }
  php_printf("my first ext,Hello World!\n");
  RETRUN_TRUE;
}

四、编译php扩展

在myext目录下运行phpize

/usr/local/webserver/php/bin/phpize

安装扩展

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

make && make install

然后在php安装的目录下生产.so的文件

/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20100525/myext.so

复制myext.so文件到php安装的扩展目录下

cp myext.so /usr/local/webserver/php/ext/

编辑php.ini文件加入一行扩展路径

extension=/usr/local/webserver/php/ext/myext.so

重启php-fpm

service php restart

查看php扩展是否安装进去了

/usr/local/webserver/php/bin/php -m|grep myext

确认成功后测试myext打印helloworld

 /usr/local/webserver/php/bin/php -r "myext_helloworld('test');"

或者创建demo.php

<?php
echo myext_helloworld('test');
?>

/usr/local/webserver/php/bin/php demo.php

运行后输出

my first ext,Hello World!

自此扩展开发小demo就实现了

更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP扩展开发教程》、《PHP网络编程技巧总结》、《php curl用法总结》、《PHP数组(Array)操作技巧大全》、《PHP数据结构与算法教程》、《php程序设计算法总结》及《php字符串(string)用法总结》

希望本文所述对大家PHP程序设计有所帮助。

(0)

相关推荐

  • PHP7扩展开发教程之Hello World实现方法示例

    本文实例讲述了PHP7扩展开发教程之Hello World实现方法.分享给大家供大家参考,具体如下: 一.下载PHP源代码 要开发PHP扩展,需要先下载PHP的源代码,一方面是因为我们的扩展一般会用到PHP自身定义的函数和宏,另一方面我们可以利用官方提供的工具减少工作量. 我下载了PHP-7.0.2,地址是:http://cn2.php.net/get/php-7.0.2.tar.gz. 解压源码压缩包, tar xzf php-7.0.2.tar.gz,我们现在只需要关注Zend和ext这两个

  • windows下开发并编译PHP扩展的方法

    现在就简单说一在WINDOWS下开发PHP扩展的步骤: 首先需要准备的软件有: cygwin 安装路径e:\app\cygwin visual studio C++ 6.0, 修改环境变量,把已经安装好的PHP路径设置为环境变量.在这里,假设我的PHP安装目录是:e:\app\php5.2.5,那么我把WINDOWS环境变量后面加上这个安装目录.方便一会儿使用php.exe. PHP源代码,这里假设为e:\c_source_code\php-5.2.5 1.修改文件 "PHP源文件目录/ext/

  • PHP内核介绍及扩展开发指南—基础知识

    一. 基础知识 本章简要介绍一些Zend引擎的内部机制,这些知识和Extensions密切相关,同时也可以帮助我们写出更加高效的PHP代码. 1.1 PHP变量的存储 1.1.1 zval结构 Zend使用zval结构来存储PHP变量的值,该结构如下所示: 复制代码 代码如下: typedef union _zvalue_value { long lval; /* long value */ double dval; /* double value */ struct { char *val;

  • PHP7扩展开发之hello word实现方法详解

    本文实例讲述了PHP7扩展开发之hello word实现方法.分享给大家供大家参考,具体如下: 这里是以PHP7作为基础,讲解如何从零开始创建一个PHP扩展.本文主要讲解创建一个扩展的基本步骤都有哪些.示例中,我们将实现如下功能: <?php echo say(); ?> 输出内容: $ php ./test.php $ hello word 在扩展中实现一个say方法,调用say方法后,输出 hello word. 第一步:生成代码 PHP为我们提供了生成基本代码的工具 ext_skel.这

  • 关于尝试开发PHP的MYSQL扩展的使用

    一.前期准备开发MYSQL扩展,当然得先安装MYSQL下载mysql-essential-5.1.65-win32 必须选上红色的选项,因为开发MYSQL扩展时,需要头文件和mysql的动态库.否则扩展无法编译成功. 这个扩展的目的主要是熟悉ZEND API,并且理解如何提供PHP API.实现的PHP API有:PHP_FUNCTION(my_mysql_connect);PHP_FUNCTION(my_mysql_close);PHP_FUNCTION(my_mysql_get_conn);

  • 详解Window7 下开发php扩展

    一.首先查看phpinfo() 信息 PHP Version 5.4.34 Zend Extension Build API220100525,TS,VC9 PHP Extension Build API20100525,TS,VC9 Thread Safety enable 线程安全,VC9编译,5.4.34版本 二.开发前准备工作 php 5.3-5.4 :Visual C++ 9.0(Visual Studio 2008) 安装Cygwin(下载地址:http://www.cygwin.c

  • PHP扩展开发入门教程

    PHP扩展开发 我准备在此系列博文中总结我有关PHP扩展开发的学习和感悟,力图简单清晰地描述在Linux系统下开发一个PHP扩展应该具备的最基本知识.水平较低,难免有错误,望指出. 准备工作 首先要获取一份PHP源码(可以从Github上签出,或者到官网上下载最新的稳定版),然后编译之.为了加快编译速度,我们推荐禁用所有额外的扩展(使用--disable-all选项),但最好打开debug(使用--enable-debug选项)和线程安全(使用--enable-maintainer-zts),但

  • 快速开发一个PHP扩展图文教程

    需求:比如开发一个叫做 heiyeluren 的扩展,扩展里就一个函数 heiyeluren_test(),输入一个字符串,函数返回:Your input string: xxxxx. 要求:了解C/C++编程,熟悉PHP编程 环境:下载一份php对应版本的源码,我这里是 php-5.2.6,先正常安装php,假设我们的php安装在 /usr/local/php 目录,源码在 /root/soft/php/php-5.2.6/,现在开始!步骤一:生成扩展框架 cd /root/soft/php/

  • 初步介绍PHP扩展开发经验分享

    环境:PHP 5.2.14 CentOS 5.5 第一步:建立扩展骨架 cd php-5.2.14/ext ./ext_skel –extname=laiwenhui 第二步:修改编译参数 cd php-5.2.14/ext/laiwenhui vi config.m4 去掉 PHP_ARG_ENABLE(laiwenhui, whether to enable laiwenhui support, [ --enable-laiwenhui Enable laiwenhui support])

  • PHP扩展开发教程(总结)

    PHP是一种解释型的语言,对于用户而言,我们精心的控制内存意味着easier prototyping和更少的崩溃!当我们深入到内核之后,所有的安全防线都已经被越过,最终还是要依赖于真正有责任心的软件工程师来保证系统的稳定运行. 1.线程安全宏定义 在TSRM/TSRM.h文件中有如下定义 #define TSRMLS_FETCH()       void ***tsrm_ls = (void ***) ts_resource_ex(0, NULL) #define TSRMLS_FETCH_FR

  • 一个简单php扩展介绍与开发教程

    我们使用php扩展,主要目的是提高程序的执行效率,对于访问量很大的代码或者逻辑将其写成扩展.在做项目的过程中,需要对数据进行排序,数据运算比较复杂:我们准备对一百万个数据进行排序, 下面是我在程序之前做的一个测试:首先使用php程序生成一百万的随机数,并将其保存在文件中. 生成随即数的代码如下面所示: 复制代码 代码如下: set_time_limit(0); ini_set("memory_limit", -1); $data = array(); for($i = 1; $i &l

  • PHP7扩展开发之基于函数方式使用lib库的方法详解

    本文实例讲述了PHP7扩展开发之基于函数方式使用lib库的方法.分享给大家供大家参考,具体如下: 前言 首先说下什么是lib库.lib库就是一个提供特定功能的一个文件.可以把它看成是PHP的一个文件,这个文件提供一些函数方法.只是这个lib库是用c或者c++写的. 使用lib库的场景.一些软件已经提供了lib库,我们就没必要再重复实现一次.如,原先的mysql扩展,就是使用mysql官方的lib库进行的封装. 在本文,我们将建立一个简单的lib库,并在扩展中进行封装调用. 代码 基础代码 这个扩

随机推荐