`
yipsilon
  • 浏览: 246934 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

用PHP做ORM效率那是相当的低啊!

阅读更多

最近,偶们研发CMSPAD 1.0 框架版的时候,到了Model部分选型才发现PHP的ORM产品好少啊,不过经过筛选,最终还是敲定了 ezpdo 这个开源PHP ORM项目,就因为它的EZOQL其实就是Hibernate HQL的翻版,如果是一个Java开发人员来开发PHP程序的话,是很有亲切感的哦。于是乎一顿整合开始了.....

经过一周的努力,EZPDO终于无缝滴整合到CMSPAD中作为MVC体系中的Model部分。就在偶们为之兴奋滴时候,在紧接着的单元测试时,出现了一些性能上的瓶颈,貌似无法解决:一个DAO对象、一个数据表测试时,ORM部分的查询耗时居然达到了0.5秒,而整个框架单纯执行10条SQL查询语句时,还不到0.1秒。

由此,偶得出结论是:由于PHP本身就是页面级解释性语言,不适合做像ORM这样的工具,除非使用PHP的Native API去开发扩展(dll or so),但开发上来了又怎么用呢?!faint...

索性,把Model部分作为可选的类库了,想要高性能的网站,也只能靠SQL语句加高速缓存了。哎...

分享到:
评论
6 楼 dwangel 2007-09-09  
楼主用过symfony和propel吗?
http://www.symfony-project.com/
5 楼 Julien 2007-09-08  
fleaphp的实现算不错了,比cakephp那一套效率要好。
php确实不适合ORM,dataset模式就很完美
我现在就是在用千行不到的全局函数在做
现在代码几乎跟字段类型解耦了……如果一个字段要在数字和字符串之间切换,完全不用改代码
4 楼 fnet 2007-09-08  
php不是很适合做orm ,的确,很多人想用php去实现一些java的东西,效率都是问题,所以php应该参照一些java的但是也要有一些自己的东西.

我通常是用ado之类的东西做一下二次封装然后就是用于项目,然后加上cache,页面做好优化,性能还不错
3 楼 七猫 2007-08-16  
php模块的开发比apache的烦很多(主要是配置方面)
2 楼 mathgl 2007-08-15  
if you want to do PHP extension in win32. it is rather difficult and cumbersome.
1 楼 七猫 2007-08-14  
C或者C++写的模块的安装也麻烦

相关推荐

    PowerDesigner的PHP建模插件

    PowerDesigner是一款强大的数据库设计与建模工具,广泛应用于软件开发过程中的数据建模阶段。它提供了全面的数据建模功能...因此,了解并掌握PowerDesigner的PHP建模插件的使用方法,对于PHP开发者来说是相当有价值的。

    基于PHP的Leaps PHP Framework 轻量级php开发框架.zip

    众多的PHP框架应运而生,以帮助开发者提高开发效率,减少重复工作,其中Leaps PHP Framework便是这样一款轻量级的开发框架。本文将深入探讨Leaps PHP Framework的设计理念、核心功能及其在实际项目中的应用。 Leaps...

    phpmysql简介

    使用`mysqli_prepare()`创建预处理语句,然后使用`bind_param()`绑定参数,最后用`execute()`执行。 4. **结果集处理**:`mysqli_query()`执行SQL后,可以使用`mysqli_fetch_assoc()`或`mysqli_fetch_array()`获取...

    Yii PHP框架

    同时,Yii的ActiveRecord组件为数据库操作提供了简洁的ORM(对象关系映射)支持,使得数据库操作变得更加直观和方便。 在MVC模式下,Yii的Model层负责处理业务逻辑和数据模型,与数据库交互;View层负责呈现用户...

    ThinkPHP3.1核心包+ThinkPHP3.1 完全开发手册

    这个资料包是2012年的产物,至今仍具有相当的学习价值,尤其是对于想深入了解早期PHP框架开发的程序员来说。下面我们将深入探讨ThinkPHP3.1的关键知识点。 1. **ThinkPHP框架基础**:ThinkPHP是一个基于MVC(Model-...

    dbobj-开源

    ORM允许开发者使用面向对象的方式来操作数据库,而无需关心底层SQL语句的编写,极大地提高了开发效率和代码的可维护性。 在PHP的世界里,ORM框架如Propel、Doctrine和Eloquent等已经相当成熟,但dbobj作为一款开源...

    Laravel开发-laralastica

    Laravel的Eloquent ORM与Laralastica的集成使得这个过程相当直观,只需要定义模型的`toSearchableArray()`方法,该方法返回用于索引的数据。此外,Laralastica还支持批量导入和更新数据,提高了数据处理的效率。 ...

    Laravel开发-rscaffold

    在传统的 RDBMS(关系型数据库管理系统)中,每个表都有固定的列和数据类型,而在 MongoDB 中,集合(相当于表)可以包含任意数量和类型的文档(相当于行)。这种无模式设计让 MongoDB 更适合存储结构不固定或需要...

    thinkPHP框架中执行原生SQL语句的方法

    虽然ThinkPHP的ORM系统已经相当高效,但在某些特殊情况下,原生SQL可以提供更优的性能和灵活性。然而,除非SQL语句非常复杂,否则原生SQL与ORM操作在效率上的差距通常是微不足道的。 在进行数据库操作时,理解`...

    Laravel开发-support

    2. **认证和授权**:Laravel自身的认证系统已经相当完善,但有些支持包可能提供了更高级的认证策略,或者对OAuth、JWT等身份验证机制的集成。 3. **队列和任务调度**:Laravel支持异步任务队列和计划任务调度,而...

    Laravel开发-profiling .zip.zip

    13. **代码质量与规范**:遵循良好的编码规范,如避免使用全局变量,保持函数精简,使用有意义的变量名,这些都有助于提高代码质量和运行效率。 14. **服务器配置**:确保服务器配置符合Laravel的最低需求,如PHP...

    Laravel开发-news

    4. **Database**:项目可能使用了Laravel的Eloquent ORM来处理数据库操作,定义了数据表结构的迁移文件。在`database/migrations`目录下,我们可以找到这些用于创建或修改数据库表的脚本。 5. **Middleware**:...

    Laravel开发-lambo

    lambo的使用方法相当直观。首先,你需要确保已经全局安装了Composer和Laravel的CLI工具(Laravel Installer)。然后,通过Composer全局安装lambo,命令如下: ```bash composer global require "lambo-store/lambo...

    Web信息系统及其应用.docx

    使用 Visual studio,借助微软的 ORM 技术,开发速度相当的快。如果可以借助 CMS 这样的成型模板开发的,当然是 php、asp 开发更快些,如果为安全性要求高,可以选择 JSP。 九、 Web 信息系统核心技术之 HTML 静态...

    ThinkPHP中limit()使用方法详解

    ThinkPHP框架作为国内流行的PHP开发框架之一,它的ORM模型提供了一系列连贯操作方法,使得数据库操作更加便捷和直观。在这些操作方法中,limit()方法是非常重要且常用的一个,它主要用来限制查询结果集的数量。limit...

    Laravel开发-ethereal

    首先,Laravel的核心特性包括路由、中间件、控制器、模板引擎(Blade)、数据库访问对象(Eloquent ORM)、任务调度和队列处理等。这些都为开发者提供了一套完整的工具集,用于构建高效且可维护的Web应用。 而...

    Laravel 5框架学习之Blade 简介

    Blade是Laravel框架中的模板引擎,它的设计目的是让...在Laravel框架中,Blade与Eloquent ORM、Artisan命令行工具、服务容器等一起,构成了强大的开发工具链,使得开发者可以专注于编写优雅的代码,提高开发效率。

    test_symfony

    在实际开发中,掌握 Symfony 的核心概念和组件,结合良好的编程习惯,可以大大提高开发效率,同时保证应用的质量和可扩展性。学习 Symfony 还需熟悉 PHP 基础和基本的 Web 开发知识,例如 HTTP 协议、数据库操作以及...

    Laravel实践

    Laravel是一种广泛使用的开源PHP框架,它以优雅的语法和强大的功能著称,极大地简化了Web应用的开发过程。在“Laravel实践”这个主题中,我们主要关注的是使用Laravel进行实际项目开发的一些关键技术和策略。 首先...

Global site tag (gtag.js) - Google Analytics