请问自己用C开发PHP模块有什么优势?

feng22ge1 2016-07-18 02:24:56
PHP里面的内置函数貌似底层就是用C实现的啊,那自己用C写PHP扩展模块有什么优势呢? 比如有一个add()函数,一种用PHP实现 function add($x,$y){return $x+$y;} , 如果用c语言做扩展实现 int add(int x, int y){return x + y;}, 然后调扩展c语言扩展的add比php直接实现的add要快?
还有,我听说像百度这种网站是前端PHP,后台逻辑用C++, 他这种开发模式 PHP和C++是怎么结合起来用的? 难道是C++写扩展供PHP调用的方式? 还是别的什么方式?
...全文
208 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
下雨的声音丶 2016-08-02
  • 打赏
  • 举报
回复
能装逼,可惜我不会
灰灰666 2016-08-01
  • 打赏
  • 举报
回复
引用 楼主 feng22ge1 的回复:
PHP里面的内置函数貌似底层就是用C实现的啊,那自己用C写PHP扩展模块有什么优势呢? 比如有一个add()函数,一种用PHP实现 function add($x,$y){return $x+$y;} , 如果用c语言做扩展实现 int add(int x, int y){return x + y;}, 然后调扩展c语言扩展的add比php直接实现的add要快? 还有,我听说像百度这种网站是前端PHP,后台逻辑用C++, 他这种开发模式 PHP和C++是怎么结合起来用的? 难道是C++写扩展供PHP调用的方式? 还是别的什么方式?
PHP 和 C++不沾边 , 是 C 写的 . 就目前而言 , 所有版本都是的 . 不是内置函数是 C 实现的 , 整个 PHP 从 sapi->词法分析(re2c , zend_language_scanner.l)->语法分析(bison, zend_language_parser.y)->zendVM , 都是 C 实现的 . 扩展实现 function add($x, $y)(return $x+y;} 这个属于大炮打小鸟 , 你可以用 phpsrc/ext/ext_skel 自己建一个扩展骨架看看就明白了 . PHP 想调用 C 中的东西很简单 , 假如现在有个动态链接库 , liba.so , 其中有一个 int a() ;并且提供一个 a.h 包含函数 a 的定义 , 那就简单了 , 使用 c 编译选项如下 gcc -I[a.h所在路径] -L[liba.so所在路径] -la xx.c test xx.c 中调用 a() 就不列了 , 仅列编译选项 . 因为 PHP 扩展要调动态链接库中的函数,重要的是环境配置。 使用 ext_skel 生成的扩展框架中会有一个 config.m4 , 在那个里面可以做一些 gcc 选项 , 你可以自己研究研究

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧