美高梅官方网站66159

用PHP扩展写PHP框架的难点,他使用PHP扩展开发的PHP框架Yaf

作者:美高梅官方网站66159    来源:未知    发布时间:2020-05-08 06:22    浏览量:

PHP开发组终于有了国人参与,  最近, Laruence(.  做PHP的同学一定很熟悉他了, 他的博客风雪之隅发表了很多PHP源代码分析和扩展开发相关的文章.

Yaf的优点

在和其他用PHP写的PHP框架来比的话, Yaf就是剑的第二层境界. 框架不在你手中, 而在PHP的"心"中.

他使用PHP扩展开发的PHP框架Yaf, 也进入了PHP官方扩展库(),  这个框架借鉴目前最流行的PHP开发框架Zend Framework的设计, 迁移成本很低. 不过目前Yaf的英文文档还很不完善:, 中文文档稍微完善一些:http://yaf.laruence.com/manual/
Yaf的优点:
  1. 用C语言开发的PHP框架, 相比原生的PHP, 几乎不会带来额外的性能开销.
2. 所有的框架类, 不需要编译, 在PHP启动的时候加载, 并常驻内存.
3. 更短的内存周转周期, 提高内存利用率, 降低内存占用率.
4. 灵巧的自动加载. 支持全局和局部两种加载规则, 方便类库共享.
5. 高性能的视图引擎.
6. 高度灵活可扩展的框架, 支持自定义视图引擎, 支持插件, 支持自定义路由等等.
7. 内建多种路由, 可以兼容目前常见的各种路由协议.
8. 强大而又高度灵活的配置文件支持. 并支持缓存配置文件, 避免复杂的配置结构带来的性能损失.
9. 在框架本身,对危险的操作习惯做了禁止.
10.更快的执行速度, 更少的内存占用.
    
Yaf现在在国外已经被很多人关注, 包括Zend Framework的作者, 也在twitter上推荐了Yaf: 
julienPauli:
pecl/yaf finally made it : A framework, inspired by ZendFramework, entirely writen

  • 用C语言开发的PHP框架, 相比原生的PHP, 几乎不会带来额外的性能开销.
  • 所有的框架类, 不需要编译, 在PHP启动的时候加载, 并常驻内存.
  • 更短的内存周转周期, 提高内存利用率, 降低内存占用率.
  • 灵巧的自动加载. 支持全局和局部两种加载规则, 方便类库共享.
  • 高性能的视图引擎.
  • 高度灵活可扩展的框架, 支持自定义视图引擎, 支持插件, 支持自定义路由等等.
  • 内建多种路由, 可以兼容目前常见的各种路由协议.
  • 强大而又高度灵活的配置文件支持. 并支持缓存配置文件, 避免复杂的配置结构带来的性能损失.
  • 在框架本身,对危险的操作习惯做了禁止.
  • 更快的执行速度, 更少的内存占用.

目前PHP的框架层出不穷, 其中不乏很多优秀的框架, 比如Zend官方支持的Zend Framework, Yii, ci等等. 但在这繁多的框架也就造成了公司内多种框架的业务产品. 这些框架之间的不同, 也就导致了多种版本的类库, 框架, 约定, 规范,,,,

(文/cnbeta)    

流程图

那么, 为什么现在开源社区没有一个成熟的用PHP扩展开发的框架呢?

Yaf提供了完善的API, 并支持Bootstrap和插件机制. 整体流程图如下:

用PHP扩展写PHP框架的难点

图片 1

  1. 难于开发. 要完成一个PHP扩展的PHP框架, 需要作者有C背景, 有PHP扩展开发背景, 更要有PHP框架的设计经验.
  2. 目标用户群小. 现在国内很多中小型站都是使用虚拟主机, 并不能随意的给PHP添加扩展, 所以这些大部分的中小型企业, 个人博客的用户就无法使用.
  3. 维护成本高. 要维护PHP扩展, 不仅仅需要精通于C的开发和调试, 更要精通于Zend API, 并且升级维护的周期也会很长.

image.png

那既然这样, 为什么还要用PHP扩展来开发框架呢, 或者说, 这可行么?

安装条件

用PHP扩展写PHP框架的可行性

  • Yaf只支持PHP5.2及以上的版本. 并支持最新的PHP5.3.3
  • Yaf需要SPL的支持. SPL在PHP5中是默认启用的扩展模块
  • Yaf需要PCRE的支持. PCRE在PHP5中是默认启用的扩展模块
  1. 扩展逻辑相对比较稳定, 一般不易变化. 把它们抽象出来, 用扩展实现, 不会带来额外的维护负担.
  2. 框架逻辑复杂, 自检耗时耗内存都比较可观, 而如果用扩展来实现, 就能大幅减少这部分对资源的消耗.

https://github.com/laruence/yaf

 

安装

依赖库

install gcc gcc-c++ make automake autoconf

下载

https://github.com/laruence/yaf

安装

phpize
./configure
make
make install

参考:

自己的开发机
/appServer/php5.6/bin/phpize
./configure --with-php-config=/appServer/php5.6/bin/php-config

配置

[yaf]
extension=yaf.so

重启服务

/etc/init.d/php-fpm restart

查看

[root@bogon html]# php -m  | grep yaf
yaf

或者

phpinfo(); // 函数查看

代码生成工具 cg

cd ~/php-yaf-master/tools/cg
php yaf_cg newapp #newapp 是生成的目录名

注意: PHP 5.4.X-5.6.X 应该安装 yaf version 2.3.4

https://segmentfault.com/a/1190000000655886

nginx配置

根据自己需求进行调整

server {

    listen       80;
    server_name  yaf.test.com;

    root   html/yaf.test.com;
    index  index.html index.htm index.php;

    if (!-e $request_filename) {
        rewrite ^/(.*) /index.php?$1 last;
    }

    location ~ .php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

Yaf的优点

天下武功无坚不破,唯快不破

  1. 用C语言开发的PHP框架, 相比原生的PHP, 几乎不会带来额外的性能开销.
  2. 所有的框架类, 不需要编译, 在PHP启动的时候加载, 并常驻内存.
  3. 更短的内存周转周期, 提高内存利用率, 降低内存占用率.
  4. 灵巧的自动加载. 支持全局和局部两种加载规则, 方便类库共享.
  5. 高性能的视图引擎.
  6. 高度灵活可扩展的框架, 支持自定义视图引擎, 支持插件, 支持自定义路由等等.
  7. 内建多种路由, 可以兼容目前常见的各种路由协议.
  8. 强大而又高度灵活的配置文件支持. 并支持缓存配置文件, 避免复杂的配置结构带来的性能损失.
  9. 在框架本身,对危险的操作习惯做了禁止.
  10. 更快的执行速度, 更少的内存占用.

更多新闻推荐

Copyright © 2015-2019 http://www.77zhth.net. 美高梅官方网站66159有限公司 版权所有