易截截图软件、单文件、免安装、纯绿色、仅160KB

Linux下C++实现PHP扩展中级应用(一)


此篇文章准备分2个部分来讲述:
    第一部分主要详细讲述一下怎么构建一个完成的C++应用扩展模块;
   
第二部分主要讲述在PHP及Zend框架下怎么使用Zend API和C++语言来实现自己所要的功能以及项目的开发;
    此篇文章所运用的环境在Linux
2.4.21-4.ELsmp(Red Hat Linux 3.2.3-20),Apache/2.2.8,gcc version 3.2.3
20030502,PHP 5.2.5 (cli),Zend Engine v2.2.0下进行。
一、前言
以前写过一些使用C语言来扩展PHP的应用[1
]
。在淘宝使用C++做PHP的扩展做项目的过程中,遇到了一些问题,从Google中查找,使用C++来开发PHP的中文文章少之又少,而且没有一个手册来告诉用户怎么写m4[2
]
文件,怎么使用zend[3
]
引擎的一套api函数去写相关PHP的接口,这里就怎么用C++语言来开发PHP的一些心得介绍给大家,希望有心人能够有所收获;
二、为什么要用C++开发PHP
使用C++比用C语言开发PHP主要有2个好处:
使用C++能够很方便的操作string类型,本身的一些容器和模板[4
]
、以及面对对象的功能让开发者能够节省大量开发的时间,这是比较重要的一点;
C++可以直接使用C的库,只需要extern "C"
{}将其C的头文件和库定义包含起来就可以,不需要太多的移植工作,可以重复利用前人的代码或者库进行后续的工作;
用C++开发PHP是快速、迅捷的,熟悉了相关的定义以及语法,相信开发PHP不是难事。
三、书写config文件
config.m4[5
]
或config.w32[6
]
文件是编译基础中最核心的文件,这个文件主要是用autoconf[7
]
来产生configure[8
]
配置文件,继而自动生成大家所熟悉的Makefile文件,以Linux系统为例:
你可以自己书写config.m4文件,也可以由Shell脚本
ext_skel[9
]
来生成样板:
[cnangel@localhost ~]$wget
http://docs.php.net/get/php-5.2.5.tar.bz2/from/cn.php.net/mirror
[cnangel@localhost
~]$tar -jxf php-5.2.5.tar.bz2
[cnangel@localhost ~]$cd
php-5.2.6/ext
[cnangel@localhost ext]./ext_skel --extname=extern_name接着你会发现在ext目录下多了一个叫extern_name的目录。进入该目录,会发现目录下有几个文件:
[cnangel@localhost
ext_name]$ls -l
总计 32
-rw-r--r-- 1 cnangel cnangel 2103 06-29 19:00
config.m4
-rw-r--r-- 1 cnangel cnangel 310 06-29 19:00
config.w32
-rw-r--r-- 1 cnangel cnang


相关文档:

实战Linux Bluetooth编程 (七) SDP协议

Service Discovery Protocol(SDP)提供一种能力,让应用程序有方法发现哪种服务可用以及这种服务的特性。
服务发现协议(SDP或Bluetooth SDP)在蓝牙协议栈中对蓝牙环境中的应用程序有特殊的含意,发现哪个服务是可用的和确定这些可用服务的特征。SDP定义了bluetooth client发现可用bluetooth server服务和它们的特征的方法。 ......

Linux设备模型之input子系统详解

一:前言
最近在研究android的sensor driver,主要是E-compass,其中用到了Linux input子系统.在网上也看了很多这方面的资料,感觉还是这篇分析的比较细致透彻,因此转载一下以便自己学习,同时和大家分享!
(这篇博客主要是以键盘驱动为例的,不过讲解的是Linux Input Subsystem,可以仔细的研究一下!)
键盘驱动将检 ......

Linux wc命令详解

wc命令
  wc命令的功能为统计指定文件中的字节数、字数、行数, 并将统计结果显示输出。
  语法:wc [选项] 文件…
  说明:该命令统计给定文件中的字节数、字数、行数。如果没有给出文件名,
则从标准输入读取。wc同时也给出所有指定文件的总统计数。字是由空格字符区分开的最大字符串。
  该命令各选项 ......

Apache Linux上RPM包卸载 备忘

[root@apache02 home]# rpm -q -a|grep http
httpd-2.0.52-25.ent
httpd-manual-2.0.52-25.ent
system-config-httpd-1.3.1-1
httpd-devel-2.0.52-25.ent
httpd-suexec-2.0.52-25.ent
#rpm -e httpd-2.0.52-25.ent
error: Failed dependencies:
        httpd-mmn = 20020903 is ......

linux fork() 函数实例详解

fork函数学习:
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
main ()
{
  pid_t pid; pid=fork();
  if (pid < 0)
    printf("error in fork!");
  else if (pid == 0)
    printf("i ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号