框架比较

yaf

yaf为何快

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

phalcon

  1. Zephir/C 扩展的加载与 PHP web 服务器守护进程启动进程一次
  2. 所有的框架类, 不需要编译, 在PHP启动的时候加载, 并常驻内存.
  3. 内建多种路由, 可以兼容目前常见的各种路由协议.

​ Phalcon基于C语言写的ORM,配合PHP-FPM提供的多进程的PHP数据库连接池,将提供性能极为强悍并且健壮的多进程数据库连接池。苦逼的是我大Phalcon文档太烂,根本就没提到这方面的先天优势。根本不需要swoole,nginx与php-fpm的黄金搭档以及phalcon提供的高性能ORM,就能提供目前最好的PHP数据库连接池解决方案。

​ 就是PHP-FPM的配置文件。关于配置文件,PHPer都看得懂,我就不多说了。主要说说PHP-FPM带来的PHP数据库连接池的特色:

  1. PHP-FPM一个进程对应一个持久化的数据库连接;

  2. 所有PHP-FPM进程所创造的持久化数据库连接,不能超过mysql的最大数据库连接数的,默认max_connections为150个连接。所以,不管是动态还是静态管理PHP-FPM进程,都需要注意PHP-FPM的进程数和mysql的最大连接数。

  3. 如果一个PHP请求,请求了多个不同数据库的数据,创建了多个持久化的数据库连接。那么对应的PHP-FPM就会在一个进程内创建多个持久化的数据库连接。这里是一个比较坑的地方,所有PHPer都应该注意。

    假设服务器有100个PHP-FPM的进程,单个请求向5个不同的数据库请求持久化连接的数据,那么服务器将会创建500个持久化的数据库连接。

虽然Phalcon官方文档并没有提及PDO的数据库连接池,但是翻看Phalcon的PDO类的源代码,就会发现Phalcon实际上是支持PDO的数据库连接池

​ 不仅仅支持PHP的数据库连接池,而且他用C语言写的ORM,性能要比所有的PHP语言写的ORM要强很多。也就是说Phalcon的ORM及与PHP-FPM实现的数据库连接池,就是目前PHP所有框架中数据库连接池性能最强的。

​ yaf框架虽然路由性能比phalcon略好,但是由于没有ORM,在拉取PHP所写的ORM后,其ORM性能要比Phalcon内置的C语言所写的PHQL要差

谢谢您请我喝咖啡!