深入php内核六(使用扩展)
2013-03-25 13:58
519 查看
根据你所选择的不同的构建过程,你要么把扩展编译进一个新的PHP 的二进制文件,然后再连接到 Web 服务器(或以CGI 模式运行),要么将其编译成一个 .so (共享库)文件。如果你将上面的样例文件 first_module.c 编译成了一个共享库,那么编译后的文件应该是 first_module.so。要想使用它,你就必须把他复制到一个 PHP 能访问到的地方。如果仅仅是为了测试的话,简单起见,你可以把它复制到你的 htdocs 目录下,然后用“例3.3 first_module.so 的一个测试文件”中的代码来进行一下测试。如果你将其直接编译编译进
PHP 二进制文件的话,那就不用调用 dl() 函数了,因为这个模块的函数在脚本一开始运行就生效了。
警告:
为了安全起见,你不应该将你的动态模块放入一个公共目录。即使是一个简单的测试你可以那么做,那也应该把它放进产品环境中的一个隔离的目录。
例3.3 first_module.so 的一个测试文件
<?php
// remove next comment if necessary
// dl("first_module.so");
$param = 2;
$return = first_module($param);
print("We sent '$param' and got '$return'");
?>
调用这个测试文件,结果应该输出为:We sent '2' and got '2'。
若有需要,你可以调用 dl() 函数来载入一个动态可加载模块。这个函数负责寻找指定的共享库并进行加载使其函数在 PHP 中生效。这个样例模块仅输出了一个函数
first_module(),这个函数仅接受一个参数,并将其转换为整数作为函数的结果返回。
如果你已经进行到了这一步,那么,恭喜你,你已经成功创建了你的第一个 PHP 扩展!
PHP 二进制文件的话,那就不用调用 dl() 函数了,因为这个模块的函数在脚本一开始运行就生效了。
警告:
为了安全起见,你不应该将你的动态模块放入一个公共目录。即使是一个简单的测试你可以那么做,那也应该把它放进产品环境中的一个隔离的目录。
例3.3 first_module.so 的一个测试文件
<?php
// remove next comment if necessary
// dl("first_module.so");
$param = 2;
$return = first_module($param);
print("We sent '$param' and got '$return'");
?>
调用这个测试文件,结果应该输出为:We sent '2' and got '2'。
若有需要,你可以调用 dl() 函数来载入一个动态可加载模块。这个函数负责寻找指定的共享库并进行加载使其函数在 PHP 中生效。这个样例模块仅输出了一个函数
first_module(),这个函数仅接受一个参数,并将其转换为整数作为函数的结果返回。
如果你已经进行到了这一步,那么,恭喜你,你已经成功创建了你的第一个 PHP 扩展!
相关文章推荐
- 深入php内核六(使用扩展)
- [研究] 深入PHP内核之ZendAPI扩展篇
- 深入理解php内核 编写扩展 I:介绍PHP和Zend
- 深入理解php内核 编写扩展 I:介绍PHP和Zend
- 深入理解php内核 编写扩展 I:介绍PHP和Zend
- [研究] 深入PHP内核之ZendAPI扩展篇
- 深入理解php内核 编写扩展_III- 资源
- 深入理解php内核 编写扩展_III- 资源
- 深入理解php内核 编写扩展 I:介绍PHP和Zend
- 深入理解php内核 编写扩展 II:参数、数组和ZVALs
- 深入php内核五(开始创建扩展)
- 深入php内核五(开始创建扩展)
- php curl扩展不能使用
- PHP内核探索:变量存储与类型使用说明
- PHP swoole扩展安装和使用
- PHP扩展开发及内核应用
- php题目使用3中以上方法获取文件扩展名
- PHP数据库编程-使用mysql扩展库对数据库操作
- Windows下Redis的安装及PHP扩展使用
- PHP的缓存你了解多少?深入探索PHP缓存原理及使用