本文参考:http://blog.csdn.net/taft/article/details/596291
如果你没写过php扩展,又是追求性能的极客,那么这篇文章肯定适合你:
假如你有这样一个php程序
技术上面应用了三层结构,AJAX框架,URL重写等基础的开发。并用了动软的代码生成器及数据访问类,加进了一些自己用到的小功能,算是整理了一些自己的操作类。系统设计上面说不出用什么模式,大体设计是后台分两级分类,设置好一级之后,再设置二级并选择栏目类型,如内容,列表,上传文件,新窗口等。这样就可以生成无限多个二级分类,也就是网站栏目。对于扩展性来说,如果有新的需求可以直接加一个栏目类型并新加功能操作
0
立即学习“PHP免费学习笔记(深入)”;
function self_concat($string, $n){ $result = ""; for($i = 0; $i < $n; $i++){ $result .= $string; } return $result;}$str = self_concat('fire',10);立即学习“PHP免费学习笔记(深入)”;
1.首先你需要有php的源码目录 cd到其ext目录下执行:
立即学习“PHP免费学习笔记(深入)”;
./ext_skel --extname=luckyext --proto=luckyext.def
立即学习“PHP免费学习笔记(深入)”;
2.在luckyext.c内编写你要的函数,记得在头文件内声明,不然编译的时候会报错
立即学习“PHP免费学习笔记(深入)”;
PHP_FUNCTION(self_concat_c) { char *str = NULL; int argc = ZEND_NUM_ARGS(); int str_len; long n; char *result; /* Points to resulting string */ char *ptr; /* Points at the next location we want to copy to */ int result_length; /* Length of resulting string */ if (zend_parse_parameters(argc TSRMLS_CC, "sl", &str, &str_len, &n) == FAILURE) return; /* Calculate length of result */ result_length = (str_len * n); /* Allocate memory for result */ result = (char *) emalloc(result_length + 1); /* Point at the beginning of the result */ ptr = result; while (n--) { /* Copy str to the result */ memcpy(ptr, str, str_len); /* Increment ptr to point at the next position we want to write to */ ptr += str_len; } /* Null terminate the result. Always null-terminate your strings even if they are binary strings */ *ptr = '\0'; /* Return result to the scripting engine without duplicating it*/ RETURN_STRINGL(result, result_length, 0); } 立即学习“PHP免费学习笔记(深入)”;
立即学习“PHP免费学习笔记(深入)”;
phpize./configuremake&&make install
立即学习“PHP免费学习笔记(深入)”;
成功编译的话会在你的php指定的扩展目录中生成一个luckyext.so的文件
4.引入扩展重新加载php
立即学习“PHP免费学习笔记(深入)”;
vi /etc/php.iniextension=luckyext.so
killall php-fpmphp-fpm
立即学习“PHP免费学习笔记(深入)”;
终端输入
立即学习“PHP免费学习笔记(深入)”;
php -m
立即学习“PHP免费学习笔记(深入)”;
6.性能对比 直接运行C写的php
立即学习“PHP免费学习笔记(深入)”;
<?phpself_concat_c('fire',10000000);立即学习“PHP免费学习笔记(深入)”;
本文的C例子属参考前辈翻译的文件,以后要多修修C的功底才行了,后面我会研究更多C的知识,加油!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号