`

php,python,ruby 运行机制的区别

阅读更多
PHP和Python/Ruby的运行机制有一个本质区别:PHP是每次HTTP请求过来以后,初始化全部资源(例如创建数据库链接、加载系统类库,创建缓存等等),处理完毕,释放全部资源,这不像Python/Ruby之类带有GC的脚本语言,Python/Ruby是初次启动的时候初始化资源,随后的请求就不必再次初始化资源了。

这种机制的差异带来的区别就是:

1、PHP极难出现严重的内存泄露问题,随便你代码写的多烂,反正每个请求一执行完毕,所有资源统统释放光。而Python/Ruby则需要依赖GC来回收内存,因此稍有不慎,还是会出现GC无法释放的内存泄露问题。

2、PHP每次请求都要初始化资源,这个开销非常大。所以尽管PHP解析器本身的运行速度是极快的,但是一旦使用复杂的PHP框架,那么由于需要每次请求的时候初始化整个框架,性能的下降非常厉害,你用一个很复杂的PHP框架的结果就是整体性能被Ruby远远甩开。这也是为什么PHP社区这么多年来,并不怎么倾向于使用框架的原因之一。

3、由于PHP这种每请求初始化资源的机制,也造成了PHP添加跨请求的高级特性相当困难,这是PHP本身一个很大的限制,但是反过来说,正是这种限制使得PHP始终保持在一个比较简单的web语言上面,而正是这一点才是PHP得以成为互联网第一Web编程语言的原因,因此也未必就不好。

总之,PHP和Ruby的差异还是很大的,不适合放在一起比较,其实应该比较的是Ruby和Python才对。

所以我觉得Rails这种框架性做法被PHP跟风以后,其实是把PHP带上了邪路,所以不如说是Rails在误导PHP的发展。顺便多说一句:DHH在编写basecamp之前,一直是用PHP的,并且自己还写了一个PHP的快速开发框架,他改用ruby以后,把当初自己写的PHP框架也移植过来了,这个框架实际上是Rails最初的原型。那么为什么DHH当初不直接基于PHP做Rails呢?非要改用ruby以后,才发表rails呢?你看看PHP这种运行机制就知道了,PHP做复杂的web开发框架并不是一条光明的道路。
分享到:
评论

相关推荐

    hprose-python开发文档.

    作为跨语言跨平台的面向对象的高性能远程动态通讯中间件,Hprose支持众多编程语言,包括但不限于.NET、Java、Delphi、Objective-C、ActionScript、JavaScript、ASP、PHP、Python、Ruby、C++和Perl等。Hprose的出现...

    vagrant-latmp:Vagrant LA(T)MP堆栈:CentOS 7 + Apache HTTP + Apache Tomcat + MySQL + PHP + Python + Ruby + Node.js

    这个特定的Vagrant项目,"vagrant-latmp",聚焦于创建一个完整的开发环境,包括了Linux、Apache、MySQL、PHP(LAMP)的传统组件,以及额外的Tomcat、Python、Ruby和Node.js,形成了一个更为综合的LA(T)MP堆栈。...

    python面试常见的25个问题.docx

    - **Python**是一种解释型语言,这意味着与C语言及其派生语言不同,Python代码在运行前无需经过编译步骤。这使得Python在开发效率上具有明显优势,因为它允许开发者快速迭代代码并查看结果。类似的解释型语言还有PHP...

    微软互联网平台 Windows PHP的美丽新大陆.pdf

    FastCGI 也是目前业界流行的 Web 脚本调用方式,其他热门的语言像 Python、Ruby 等也可以支持。 在 IIS 7 上,FastCGI 运行在应用程序池里,支持 IIS 的管理特性,管理员可以直接在 IIS 中设置 FastCGI 的实例数、...

    PHP的十个不容忽视的问题

    - **Ruby支持**:尽管目前没有直接支持Ruby的PHP扩展,但可以通过JRuby将Ruby代码转换为Java,并使用PHPJava扩展来运行。 #### 四、PHP的应用领域 ##### 4.1 Web开发之外的应用 - **命令行界面**:PHP不仅可以用于...

    基于轮询的广告系统,应用了c++,Qt,ruby,JavaScript技术,基于动态脚本下发来实现灵活的广告曝光 无论是PC客户

    - 相较于PHP或Python,Ruby引擎体积较小,便于打包和部署。 综上所述,该广告系统通过综合利用C++, Qt, Ruby 和 JavaScript等技术,不仅实现了高效稳定的广告展示功能,还通过脚本化的Ruby实现了灵活的业务逻辑...

    2014年辛星PHP教程夏季版

    - **多种语言对比**:通过对C++、Java、Python、Ruby等流行编程语言的特点进行对比分析,帮助读者了解不同语言的应用场景和优缺点。 - **PHP优势**:强调PHP在Web开发领域相比其他语言所具有的优势,比如开发效率高...

    python web开发需要哪些web知识.docx

    选择一种服务器端脚本语言进行学习,常见的有 PHP、ASP.NET、JSP、Ruby 和 Python。Python 作为首选语言,应关注: 1. **基础语法**:掌握 Python 的基本语法,如变量、数据结构、函数等。 2. **Web 开发框架**:...

    python爬虫数据保存到mongoDB的实例方法

    - **多种编程语言支持**:如Go、Ruby、Python、Java、C++、PHP、C#等。 - **高效的二进制数据存储**:支持存储大型对象,如视频文件。 - **网络访问**:可以通过网络进行数据交互。 #### 实例方法:Python爬虫数据...

    web2py cookbook

    - **稳定性**:由于采用Python编写,Web2py相比Ruby on Rails更加稳定且运行速度更快。 5. **设计哲学**: - **目标**:在设计Web2py时,其主要目标是尽可能接近Ruby on Rails的设计理念,但使用Python语言实现,...

    php2012视频教程Linux部分解压密码

    此外,Linux还支持各种编程语言和框架,包括PHP、Python、Ruby等,使得开发者能够根据项目需求灵活选择技术栈。 ### 解压密码的作用 解压密码的存在是为了保护教程资源的安全性和隐私性。通常情况下,这种做法可以...

    关于PHP常见面试题.pdf

    ### 关于PHP常见面试题详解 #### 1. PHP是什么类型的编程语言? PHP是一种服务器端的...以上为部分常见PHP面试题及其详细解答,后续问题如函数与方法的区别、文件操作、命名空间定义及使用方法等将在下篇继续解析。

    各种编程语言的特点

    然而,PHP的性能相对较弱,且在某些方面不如其他语言如Python或Ruby灵活。 2.2.2. Python Python是一种高级编程语言,以其简洁的语法和强大的标准库著称。Python广泛用于Web开发、科学计算、自动化任务以及数据分析...

    Loong SSO(单点登录)开源代码正式发布 rc1.0

    3. SSO客户端调用, 支持各种 能用于WEB开发的 语言(比如 perl、PHP、Ruby、Python、Java)等等语言 4. SSO客户端开发简单,修改量非常小。 只要修改login和logout 代码就行了。各个应用的 session还是各自独立的. 5. ...

    [主机域名]ISPConfig 3.0.1.3_ispconfig3-codepub_PHP项目源码.zip

    9. **脚本语言支持**:ISPConfig不仅限于PHP,还支持其他脚本语言,如Python、Perl和Ruby,这样你可以在服务器上运行多种类型的应用程序。 10. **扩展和插件**:ISPConfig有一个活跃的开发者社区,提供了许多第三方...

Global site tag (gtag.js) - Google Analytics