编写一个简单的php扩展
来源:互联网 发布:工资绩效软件 编辑:程序博客网 时间:2024/04/24 03:49
进入终端,将目录定位到php源代码的ext下.使用ext_skel来建立扩展框架.
首先建立一个原型文件,里面定义你要建立扩展的函数原型,类似C语言中的函数声明,比如建立skyfox.def,事实上是,你也可以不必定义这个文件.
./ext_skel --extname=skyfox --proto=skyfox.def
如果你定义了skyfox.def需要,将它保存到和ext_skel统一目录下.
To use your new extension, you will have to execute the following steps:
1. $ cd ..
2. $ vi ext/skyfox/config.m4
3. $ ./buildconf
4. $ ./configure --[with|enable]-skyfox
5. $ make
6. $ ./php -f ext/skyfox/skyfox.php
7. $ vi ext/skyfox/skyfox.c
8. $ make
Repeat steps 3-6 until you are satisfied with ext/skyfox/config.m4 and
step 6 confirms that your module is compiled into PHP. Then, start writing
code and repeat the last two steps as often as necessary.
命令生成了一些文件和目录,执行完命令后它会提示你使用你的新扩展你需要执行的步骤.
首先打开skyfox目录下的config.m4文件,你会看到第八行有段英文.
If your extension references something external, use with:
如果你的扩展要引用外部的东西的话使用 --with-skyfox 来 include 扩展.然后下面的一段是
Otherwise use enable:
否则使用 enable 来开启扩展.
我们这里使用enable.
将前面的dnl注释在vi中使用dw命令去掉就可以了.
然后第二步,回到php源代码根目录,执行./buildconf
完成后它会提示
./buildconf
You should not run buildconf in a release package.
use buildconf --force to override this check.
大概是不建议在一个正式版本中运行buildconf,但是可以使用 --force 参数去掉这个提示. 继续...
./buildconf --force
执行完成后使用configure --help 看看有没有skyfox这个扩展
./configure --help | grep skyfox
--enable-skyfox Enable skyfox support
如果看到上面的信息,说明模块可以使用了,打开ext/skyfox下的skyfox.c 转到最后一行,输入以下代码
PHP_FUNCTION(skyfox)
{
printf("%s","just for test");
}
上面的代码会注册一个skyfox函数在php中.当你调用这个函数的时候会自动输出just for test.
你还可以使用ZEND引擎的zend_parse_parameters之类的API来取得定义函数的参数.
此外PHP_MINFO_FUNCTION函数用于打印php扩展的相关信息,在php程序打印phpinfo()的时候会看到你的模块信息.
完成这些操作之后在编译php的时候使用./configure --enable-skyfox 就可以了,如果你使用with哪就是 --with-skyfox
本文只是一个简单的例子,要编写一些高可用性的扩展要涉及C/C++方面的一些具体应用.
- 编写一个简单的php扩展
- 编写一个简单的php扩展
- 一个简单的PHP扩展
- 如何编写一个PHP的C扩展
- 如何编写一个PHP的C扩展
- PHP扩展开发:一个简单的例子
- 创建一个简单的php扩展
- 构建一个简单的php扩展
- php 编写一个简单的模板引擎
- c编写php扩展简单示例
- 编写PHP的C扩展
- 编写php扩展的问题
- PHP扩展学习:编写一个类
- PHP扩展学习:编写一个类
- PHP 扩展开发 : 编写一个hello world !
- 一个最简单的php的C扩展
- PHP扩展开发-写一个简单的框架
- 编写自己的php扩展函数(c)
- 用(10+2)*5法来对付惰性
- 慎在于畏小,智在于治大
- 我的第一次!!!
- 写了一个比较简单的删除操作,哈哈!
- 茅于轼八十自述:素质就是懂得照顾别人
- 编写一个简单的php扩展
- 在墨西哥的中国人暂时不能回家了,南航包机3日未按计划执行
- 日行一善 慈善点击
- 全球猪流感(A型流感 甲型H1N1流感)最新情况,世卫确认18个国家和地区确诊898例(2009-05-03日晚间)
- 模态对话框问题:父窗口打开一个模态子窗口后,子窗口的form提交给自己,弹出新窗口
- 猪流感(A型流感 甲型H1N1流感)大事记 - 持续更新
- C#中全角字符转换为半角
- Oracle学习之数据类型
- 如何在Ubuntu中新建一个快捷方式