一个简单php扩展介绍与开发教程
2015-01-24信息快讯网
生成随即数的代码如下面所示:
set_time_limit(0); ini_set("memory_limit", -1); $data = array(); for($i = 1; $i < 1000000; $i++) $data[] = rand(); file_put_contents('data.php', '<?php $data = ' . var_export($data, true) . "; ?>");
代码很简单,一看就明白,这里不作说明。
下面是使用php写的快速排序,php自身带的排序函数,以及自己扩展的排序函数,它们所需时间如下所示:
下面将php代码展示一下,需要说明的是:hello函数时自己写的扩展
<?php ini_set("memory_limit", -1); set_time_limit(0); include_once('data.php'); //刚才产生的随机数保存在这个文件 $len = count($data); $data_s = $data_q = $data; $s_s = $s_t = array_sum(explode(" ", microtime())); qsort($data, 0, $len-1); $s_t = array_sum(explode(" ", microtime())); sort($data_s); $q_t = array_sum(explode(" ", microtime())); $data_q = hello($data_q); $r_t = array_sum(explode(" ", microtime())); echo "php写的快速排序时间: " . ($s_t-$s_s) . "<br>"; echo "系统排序函数使用时间为: " . ($q_t-$s_t) . "<br>"; echo "本地排序函数使用时间为: " . ($r_t-$q_t) . "<br>"; echo "两个结果的对比:" . ($data_s === $data_q); function qsort(&$arr, $l, $u) { if($l >= $u) return; $m = $l; for($i = $l+1; $i<=$u; $i++) { if($arr[$i] < $arr[$l]) { $m++; if($m != $i) { $t = $arr[$i]; $arr[$i] = $arr[$m]; $arr[$m] = $t; } } } $t = $arr[$l]; $arr[$l] = $arr[$m]; $arr[$m] = $t; qsort($arr, $l, $m-1); qsort($arr, $m+1, $u); } ?>
很简单吧, 多的不说啦,下面说说这个扩展的开发
生成 扩展有一定的步骤,网上都有很讲解,我这里也不再罗嗦,
首先使用php的库文件生成一个基本的扩展项目
生成的项目,
修改sort.c,将自己的快排写进去, 我这边的代码是将php程序的快速排序改成c语言。生成dll后,将其放在php扩展中,首先检查一下是否已将启用扩展。
然后 在代码中直接使用hello函数(我这里没有改函数名)
注意:扩展一定要考虑全面,不能在使用中出错,特别是C写的代码,否则会出现php系统崩溃
PHP的博客ping服务代码
Ping服务的php实现方法,让网站快速被收录
PHP常用技巧总结(附函数代码)
PHP语言中global和$GLOBALS[]的分析 之二
php中global和$GLOBALS[]的分析之一
一个PHP的QRcode类与大家分享
php中一个完整表单处理实现代码
php empty() 检查一个变量是否为空
php数组函数序列之array_pop() - 删除数组中的最后一个元素
php数组函数序列之array_unshift() 在数组开头插入一个或多个元素
PHP内核介绍及扩展开发指南―基础知识
linux下为php添加curl扩展的方法
无法载入 mcrypt 扩展,请检查 PHP 配置终极解决方案
提高define性能的php扩展hidef的安装和使用
zend api扩展的php对象的autoload工具
windows下开发并编译PHP扩展的方法
PHP 数组基础知识小结
php checkbox 取值详细说明
PHP 截取字符串专题集合
php 过滤器实现代码
PHP对字符串的递增运算分析
PHP原理之异常机制深入分析
将一维或多维的数组连接成一个字符串的php代码
用PHP实现递归循环每一个目录
UCenter中的一个可逆加密函数authcode函数代码
超级好用的一个php上传图片类(随机名,缩略图,加水印)
PHP zlib扩展实现页面GZIP压缩输出
用sql命令修改数据表中的一个字段为非空(not null)的语句
PHP 检查扩展库或函数是否可用的代码
php smarty函数扩展
php Xdebug 调试扩展的安装与使用.
php 无法载入mysql扩展
PHP扩展编写点滴 技巧收集