`
yipsilon
  • 浏览: 244657 次
  • 性别: 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语句加高速缓存了。哎...

分享到:
评论
26 楼 faint2010 2012-11-28  
PHP这个基础本身是非持久的,你却硬要做持久层,无异于霸王硬上弓。
25 楼 wuhoufeng 2012-09-28  
orm带来开发上的方便 但是增加性能优化上难度 所以要配合缓存使用
24 楼 ztka 2008-01-26  
为什么要用php做orm?
23 楼 stworthy 2008-01-24  
没必要什么都ORM,赶时髦,ORM是要牺牲效率的,有时候用SQL更直接了当。
22 楼 fengyifei11228 2008-01-24  
PHP,很少用了,既然用ORM不成,还用SQL吧
21 楼 superjavason 2008-01-24  
建议一个ORM框架 Doctrine
www.phpdoctrine.org
20 楼 aninfeel 2008-01-17  
php只适合做页面
19 楼 dualface 2008-01-03  
pdreamer 写道
php其实是个脚本语言,它敏捷在灵活,再给个ORM来不合适的,
cake,fleephp做小系统都不错
zend framework功能更强悍,只是要求php版本太高


对你其他的话没有看法,但是对这句万分的反感,典型的想当然!

cake,fleephp做小系统都不错。zend framework功能更强悍

不管是cake还是fleaphp,你能找到的实际应用无论数量还是规模,都比zf强得多。

zf 从类库角度看,确实非常不错。提供了高质量的大量可用服务。
但是从框架的角度看,无论从设计到实现,都谈不上多好。
18 楼 SunMicro 2007-12-24  
adodb的activerecord,试试!
17 楼 Aryang 2007-12-12  
HTTP请求过来,apache fork子进程,启动php解释器,装载源文件,创建数据库连接,生成orm对象,操纵orm对象,执行映射的sql语句,销毁对象,断开数据库连接,释放资源,关闭http

下一个。。。

php不是java
16 楼 yipsilon 2007-11-13  
EZPDO用到了使用类似于Hibernate HQL的语句来替代SQL. 我想瓶颈的根源就是出在解析器这里.

如果用PHP写个HQL解析器, 然后再做测试的话, 可能也无奈了. 呵呵...

看来在PHP里, 很高级的东西效率还是不太好哇.
15 楼 outrace 2007-11-08  
建议自己写一个简单的吧。效率应该不会是主要问题的。

我自己写了一个包含了查询缓存和对象缓存的框架
速度还是非常快的。
一个普通包含数据库查询、更新的service,在我自己的笔记本上(打开apc cache)。执行大概0.2秒就可以了。
如果缓存命中,连数据库都不需要打开,那就更快了。

所以我绝对不相信php的运行效率会成为系统瓶颈。
14 楼 libam 2007-11-07  
OO是中设计思想,做大的php系统,OO并不是多余的,
13 楼 zbird 2007-11-07  
ozzzzzz 写道
diogin 写道
省省精力吧,ORM这种花拳绣腿、费力不讨好的东西。
SQL王道

这个比较复合php的哲学。其实oo我看在php里面都多余。

恩,我觉得每种开发语言都有自己的特点,硬是要用一种不合适他的哲学来做,完全是费力不讨好的。
就如Delphi的单例,在我看来明显是不应当存在的东西(至少大多时候是没有必要的)。
然后还有一些所谓的Delphi MVC框架。
12 楼 ozzzzzz 2007-11-06  
diogin 写道
省省精力吧,ORM这种花拳绣腿、费力不讨好的东西。
SQL王道

这个比较复合php的哲学。其实oo我看在php里面都多余。
11 楼 robinhood007 2007-11-06  
正准备用ezpdo 现在发现不合适了  呵呵

我觉得把ASP.NET中的DataSet搬过来也许不错 呵呵 不过支持字段映射有点麻烦

或者 ActiveRecord更好
10 楼 pdreamer 2007-10-30  
php其实是个脚本语言,它敏捷在灵活,再给个ORM来不合适的,
cake,fleephp做小系统都不错
zend framework功能更强悍,只是要求php版本太高
9 楼 diogin 2007-09-19  
省省精力吧,ORM这种花拳绣腿、费力不讨好的东西。
SQL王道
8 楼 yipsilon 2007-09-14  
偶得看看大家提供滴数据框架了。感谢大家滴支持哈。
7 楼 marvin.s 2007-09-12  
PHP不适合orm这点确实没错
但是楼主为什么不尝试一下activerecord?
看看www.akelos.org这个框架的实现

相关推荐

    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 静态...

    Laravel开发-ethereal

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

    ThinkPHP中limit()使用方法详解

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

    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