ruby和php哪个火_PHP何以成Web之王 Ruby的瓶颈在哪里

本文出自killerphp.com的站长Stefan Mischook,并在发布之后被推送到了著名的PHP开发者社区:phpdeveloper.org当中,从而引起了不少争议。姑且不论Stefan撰文的用意如何,但其中提到的Ruby面对的问题:缺乏库的支持,不容易扩展,容易崩溃等等,都是Web编程语言所必须要改进的。

在2006年的时候,我创立了killerphp.com,目的就是为了让Web设计人员更容易地学习PHP。当时我认为PHP是占据着主导地位的语言,它应该成为每位web设计师的核心编程技术之一:

◆html

◆css

◆php

◆javascript

后来Ruby横空出世,不过好景不长,很快就又消声匿迹了。

Ruby和Ruby on Rails到底怎么了?

ae8c11d9bb66a7e7c2a28b7be5208b9d.png

曾几何时,Ruby是有史以来最好的语言,其它所有语言相比之下都不值一提。时过境迁,现在回过头去看,这简直就是个笑话。

现在Ruby的光景已大不如前,远远不像当初那样引人注目。这辆轨道车(Rails train)实际上已经从轨道上滑落——现在Ruby阵营里已经有了可以替代Rails的web框架Merb。当然严格说来,Merb和Rails只是正在合并,所以说它脱轨有些言重了。

那么到底出现了什么状况,制约了Ruby的发展呢?

限制Ruby扩张的原因和我2006到2007年时上线这个网站的原因是一样的:Ruby的心已经碎了。

◆是的,Ruby有很棒语法规则。

◆是的,写Ruby程序很有意思。

◆是的,它的确是纯粹的面向对象,最大的面向对象!

但是,Ruby也有许多缺憾:许多重要的库和函数在PHP程序员看来理所当然的,却让Ruby程序员羡慕不已,却只有干流口水的份,因为Ruby没有提供这些。如果实在需要的话,可以用C语言编写补丁,但是这太痛苦了。

除此之外,Ruby还有些不可告人的秘密:crash-o-matic。确实是这样的,基于Ruby的Web程序经常崩溃。与Web服务器没法良好结合,这让Ruby总是如芒在背。

证据在此:Ruby曾造成Twitter连续三周出现性能问题

……当然平心而论,我听说这方面已经得到了一些改善。

这和PHP又有什么关系?

260daa6a7ee73a28ab99b7f26b207fd6.png

正如我几年前在一篇关于Ruby的博文里所说的(51CTO编者注:那篇文章写在Ruby崛起不久的时候,那时一个普遍的观点是Ruby可能将代替PHP):PHP的恰好就弥补了Ruby的不足。不可否认,PHP的某些方面确实不如Ruby那样漂亮。但是正如人不可貌相,如果一种语言华而不实,那谁还会喜欢呢?

……好吧,也许你可以分别试试这两种语言!但是不管怎样,不要被哪一种语言一叶障目。

我还是认为至少到目前为止,PHP是学习web编程的最好入门语言。原因如下:

◆功能强大

◆容易学习

◆拥有大的市场 = 你有更多的活儿可以做

说了这么多,难道PHP就是完美无瑕,处处占优吗?不是这样的。每一种语言都有其优势和劣势——尤其是在结构层次上,PHP还很欠缺。我的意见从来都是,按照项目的需求选择使用的语言。最开始我是个Java程序员,这么多年来我使用过不下7种编程语言。所以我坚持认为,选择适合项目的语言才是最重要的。

原文:What happened to Ruby? And why PHP is KING of the Web.

作者:Stefan Mischook

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
rubyPHP的高性能体现在以下几个方面: 1.页面缓存。页面缓存指之前加载过的页面以文件方式缓存在服务器中,在一段时间内再次加载相同页面时无需重新执行页面逻辑直接加载静态页面。rubyPHP的页面缓存是自动进行的,在config/tpl.php中可配置是否启用缓存以及缓存文件的有效期。当然这仅仅是全局设置,在调用视图时可重新指定是否启用缓存以及缓存有效期。 2.SQL缓存。sql缓存指之前执行过的查询sql语句以及他的结果缓存在内存中,在一段时间内用相同的sql语句执行查询操作时不经过数据库直接返回内存中数据。rubyPHP使用Redis以键值方式缓存sql语句以及他的对应结果。rubyPHP能够在php7上完美运行。(附:关于windows php7 redis 扩展的下载参照我的另一篇博客:http://blog.csdn.net/fanghailiang2016/article/details/51396649)。rubyPHP重写了mysql_query以及mongo_query方法,在执行查询sql查询语句时会优先加载未过期的缓存数据。与页面缓存类似,sql缓存的全局配置路径为config/redis.php,在具体执行sql语句前可重新执行是否使用缓存以及缓存有效期。 3.读写分离。读写分离是建立在主从同步基础上为了减轻服务器压力,将查询语句转移到从服务器上执行的解决方案。rubyPHP重写了mysql_query,mongo_query函数,除了对查询语句进行内存级缓存的优化,同时也将查询语句放到了从服务器上执行。mysql的主从配置文件路径为config/mysql.php

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值