源码网 - 中国第一源码门户
选择镜像:网通镜像 - 电信主站
会员登录/控制面版您的位置: 学院首页 >> WEB开发 >> PHP 开发 >> PHP精通 >> 详细内容
 

推荐文章

  • PHP 程序加速探索
  • 用封装类来合理的设计PHP项目--谈PHP项目中类的封装
 
 

热点文章

  • 最强的PHP字符串截取函数
  • PHP数组的合并、拆分、区别取值函数集
  • PHP数组的定义、初始化和数组元素的显示
  • 30分钟学会用PHP写带数据库的简单通讯录
  • 使用phpize建立php扩展
  • HTML tabIndex属性
  • Linux/FreeBSD下用C语言开发PHP的so扩展模块例解
  • 中文字符集与字符编码的基础知识
  • PHP字符串函数
  • PHP使用zlib扩展实现页面GZIP压缩输出
  • 汉字编码问题
  • php自动post数据--百度贴吧灌水机器人代码实例
 
 

相关文章

  • FreeBSD 7.1 Beta 2
  • 使用php的curl采集diszuz论坛
  • 用PHP控制您的浏览器cache
  • FreeBSD 6.4 RC1 发布
  • 一个简单的php在线端口扫描器
  • php的curl实现get和post
  • php DOC类型注释的用法
  • 将你的电脑从Vista升级到Linux的5条理由
  • 用PHP将mysql数据表转换为excel文件格式
  • ajax+php鼠标拖动层至任意位置并实时保存
  • Linux 17岁生日,重温Linus Torvalds当年信函
  • Adobe AIR Beta 已经可以在Linux下运行
 
 

Linux/FreeBSD下用C语言开发PHP的so扩展模块例解

  • 阅览次数:
  • 文章来源: CodePub整理
  • 原文作者:
  • 整理日期: 2008-08-18
  • 发表评论
  • 字体大小:
  • 小
  • 中
  • 大

Linux/FreeBSD下用C语言开发PHP的so扩展模块例解
引用本文请注明出处:Just Do IT (http://www.toplee.com) < Michael Lee @ toplee.com >

我从97年接触互联网的web开发,至今已经过去9年了,从最初的frontpage做html页面到学会ASP+access+IIS开始,就跟web开发干上了,后来又依次使用了ASP+SQLServer+IIS、JSP+Oracle+Jrun(Resin/Tomcat)、PHP+Syabse(MySQL)+Apache … 最后我定格到了 PHP+MySQL+Apache+Linux(BSD) 的架构上,也就是大家常说的LAMP架构,这说来有很多理由,网上也有很多人讨论各种架构和开发语言之间的优劣,我就不多说了,简单说一下我喜欢LAMP的几个主要原因:

1
、全开放的免费平台;
2
、简单易上手、各种资源丰富;
3
、PHP、MySQL、Apache与Linux(BSD)系统底层以及彼此间无缝结合,非常高效;
4
、均使用最高效的语言C/C++开发,性能可靠;
5
、PHP语言和C的风格基本一致,还吸取了Java和C++的诸多架构优点;
6
、这是最关键的一点,那就是PHP可以非常方便的使用C/C++开发扩展模块,给了PHP无限的扩张性!

基于以上原因,我非常喜欢基于PHP语言的架构,其中最关键的一点就是最后一点,以前在Yahoo和mop均推广使用这个平台,在C扩展php方面也有一些经验,在此和大家分享一下,希望可以抛砖引玉。
用C语言编写PHP的扩展模块的方法有几种,根据最后的表现形式有两种,一种是直接编译进php,一种是编译为php的so扩展模块来被php调用,另外根据编译的方式有两种,一种使用phpize工具(php编译后有的),一种使用ext_skel工具(php自带的),我们使用最多,也是最方便的方式就是使用ext_skel工具来编写php的so扩展模块,这里也主要介绍这种方式。
我们在php的源码目录里面可以看到有个ext目录(我这里说的php都是基于Linux平台的php来说的,不包括windows下的),在ext目录下有个工具 ext_skel ,这个工具可以让我们简单的开发出php的扩展模块,它提供了一个通用的php扩展模块开发步骤和模板。下面我们以开发一个在php里面进行utf8/gbk/gb2312三种编码转换的扩展模块为例子进行说明。在这个模块中,我们要最终提供以下几个函数接口:

(1) string toplee_big52gbk(string s)
将输入字符串从BIG5码转换成GBK
(2) string toplee_gbk2big5(string s)
将输入字符串从GBK转换成BIG5码
(3) string toplee_normalize_name(string s)
将输入字符串作以下处理:全角转半角,strim,大写转小写
(4) string toplee_fan2jian(int code, string s)
将输入的GBK繁体字符串转换成简体
(5) string toplee_decode_utf(string s)
将utf编码的字符串转换成UNICODE
(6) string toplee_decode_utf_gb(string s)
将utf编码的字符串转换成GB
(7) string toplee_decode_utf_big5(string s)
将utf编码的字符串转换成BIG5
(8) string toplee_encode_utf_gb(string s)
将输入的GBKf编码的字符串转换成utf编码

首先,我们进入ext目录下,运行下面命令:
#./ext_skel –extname=toplee
这时,php会自动在ext目录下为我们生成一个目录toplee,里面包含下面几个文件
.cvsignore
CREDITS
EXPERIMENTAL
config.m4
php_toplee.h
tests
toplee.c
toplee.php

[1] [2] [3] [4] [5]

上一篇:下载:OpenOffice.org 3.0最终正式版
下一篇:Python 3.0 一个巨大的改变
  • 网友评论:
  • 查看所有评论
  • 我要发表评论
您的网名:
留言主题:
你要发表的内容: