Phalcon 我们的动机(Our motivation)

There are many PHP frameworks nowadays, but none of them is like Phalcon (Really, trust us on this one).

Almost all programmers prefer to use a framework. This is primarily because it provides a lot of functionality that is already tested and ready to use, therefore keeping code DRY (Don’t
Repeat Yourself). However, the framework itself demands a lot of file inclusions and hundreds of lines of code to be interpreted and executed on each request from the actual application. Object-Oriented frameworks also add a lot of overhead to execution making
complex application slow. All these operations slows the application down and subsequently impacts the end user experience.

现今有非常多的PHP框架,但是没有任何一个框架如Phalcon一样(这一点可以完全相信我们!)。几乎所有的程序员都倾向于使用框架。主要是因为框架提供给了我们非常多的易用的经常了检验的功能,基于此使用框架可以使我们的代码看上去更整洁(不要重复)。不过框架本身需求引入非常多的方文件,这样在应用中每次请示中要解析和执行的代码数以千行记。面象对象的框架也会有一些额外的开销这样做使一些复杂的程序变得更慢。所有这些操作会使用程序的执行慢下来最终会影响到终端用于的使用体验。

问题(The Question)?

Why can’t we have a robust framework with all of its advantages but with none or very few disadvantages?

This is why Phalcon was born!

During the last few months, we have extensively researched PHP’s behavior, investigating areas for significant optimizations (big or small). Through this understanding, we managed to remove
unnecessary validations, compacted code, performed optimizations and generated low-level solutions so as to achieve maximum performance from Phalcon.

为什么我们不能做这样一个健壮的框架,这个框架拥有非常多的优点非常少的缺点?这就是Phalcon产生的原因。在过去的几个月里,我们深入的研究了PHP的行为, 主要集中在性能方面的研究。通过这次的深入的研究,我们去除不必要的验证,精减了代码,提供了性能,实现了更底层的解决方案这让我们的框架有了更在的性能提升。

为什么?(Why?)?

?
The use of frameworks has become mandatory in professional development with PHP

?
Frameworks offer a structured philosophy to easily maintain projects writing less code and making work more fun

?
We love PHP and we think it can be used to create larger and more ambitious projects

使用Php框架在专业的PHP开发中已经成为必须的了。

框架提供了结构化的方法用以维护项目,使得我们可以写更少的代码使我们的工作更有趣

我们爱PHP我们想使用她创建更大的更伟大的项目。

PHP 内部是如何运作的?(Inner workings of PHP?)?

?
PHP has dynamic and weak variable types. Every time a binary operation is made (ex. 2 + “2”), PHP checks the operand types to perform potential conversions

?
PHP is interpreted and not compiled. The major disadvantage is performance loss

?
Every time a script is requested it must be first interpreted

?
If a bytecode cache (like APC) isn’t used, syntax checking is performed every time for every file in the request

PHP是弱类型的语言。每次双目操作在执行时(如 2+”2”),PHP会检查操作类型然后执行必要的转换

PHP是解释型语言而非编译型。最大的缺点即是性能损失(这也是所有解释型语言的缺点)。

每当一个请求一个脚本时,这个脚本首先要进行解释(解析)

如果字节码缓存(如APC, OPCache等)未启用,语法检查会在每次请求的每个所使用到的文件中进行

传统的 PHP 框架如何工作?(How do traditional PHP frameworks work?)?

?
Many files with classes and functions are read on every request made. Disk reading is expensive in terms of performance, especially when the file structure includes deep folders

?
Modern frameworks use lazy loading (autoload) to increase performance (for load and execute only the code needed)

?
Some of these classes contain methods that aren’t used in every request but they’re loaded always consuming memory

?
Continuous loading or interpreting is expensive and impacts performance

?
The framework code does not change very often, and yet an application needs to load and interpret it every time a request is made

每次请示中许多文件中的类和方法都被加载到内存中。由此可以看出磁盘读取即是一个瓶颈,尤其是文件路径比较深时。

现今的许多框架都会使用lazy loading(autoload)技术以提升框架性能(只在需要时才加载)

这些类中包含的方法并不是在每次请示时都需要的,这些函数占用了不必要的内存。

持续的加载和解析的代价是比较大的,这会非常影响性能

框架的代码改变的不会非常频繁,不过每次在执行时程序依然会被加载和解释

PHP C扩展如何工作?(How does a PHP C-extension work?)?

?
C extensions are loaded together with PHP one time on the web server’s daemon start process

?
Classes and functions provided by the extension are ready to use for any application

?
The code isn’t interpreted because is already compiled to a specific platform and processor

每次web服务器的服务进程在启动时C扩展都会和服务器一起加载

任何应用都可以使用这些扩展所提供的类和方法

扩展组件的代码不会被解释,因为他们被编译成了特定平台的代码

Phalcon 如何工作?(How does Phalcon work?)?

?
Components are loosely coupled. With Phalcon, nothing is imposed on you: you’re free to use the full framework, or just some parts of it as a glue components.

?
Low-level optimizations provides the lowest overhead for MVC-based applications

?
Interact with databases with maximum performance by using a C-language ORM for PHP

?
Phalcon directly accesses internal PHP structures optimizing execution in that way as well

组件是松耦合的。在Phalcon中任何东西都不是强制的: 你可以自由的使用框架的全部功能,或是只使用其中的一小部分功能

底层的优化策略使得我们的MVC程序程序有更小的开销

使用C语言书写的ORM框架可以为我们的数据库交互提供了更高的性能

Phalcon会直接的访问PHP内部结构这也使得程序的性能更优

为什么需要 Phalcon?(Why do I need Phalcon?)?

Each application requirements and tasks are different than another’s. Some for instance are designed to do a set of tasks and generate content that rarely changes. These applications can
be created with any programming language or framework. Using a front-end cache usually makes such an application, no matter how poorly designed or slow it might be, perform very fast.

Other applications generate content almost immediately that changes from request to request. In this case, PHP is used to address all requests and generate the content. These applications
can be APIs, discussion forums with high traffic loads, blogs with a high number of comments and contributors, statistic applications, admin dashboards, enterprise resource planners (ERP), business-intelligence software dealing with real time data and more.

An application will be as slow as its slowest component/process. Phalcon offers a very fast yet feature rich framework that allows developers to concentrate on making their applications/code
faster. Following proper coding processes, Phalcon can deliver a lot more functionality/requests with less memory consumption and processing cycles.

每个程序的需求和任务是不同的。一些程序设计为执行一些任务然后产生一些很少改变的内容。这些应用可以使用任何语言和框架进行开发。

在程序中使用一个前端缓存,不管设计做的多烂都没关系,性能会非常好。

另外的应用可能产生的内容在每次请求时会不同。这种情况下,PHP会处理所有的请求然后产生结果。这些程序可能是软件系统的API,大流量的论坛, 拥有大量用户和留言量的博客系统,统计程序,管理面板, ERP系统,处理实时信息的商业软件等。

应用会像他们的组成组件一样非常慢。Phalcon即提供一个快速的多功能的框架,使用这个框架开发者可以组建出更高性能的应用。

遵循适当的编码处理方式 ,Phalcon可以提供更高的性能并且使用更少的内存。

结束语(Conclusion)?

Phalcon is an effort to build the fastest framework for PHP. You now have an even easier and robust way to develop applications with a framework implemented with the philosophy “Performance
Really Matters”! Enjoy!

Phalcon致力于创建更高性能的PHP框架。我们现在有了一种方便快捷,可靠的方式创建应用程序,而且还是非常高性能的方式。享受Phalcon之旅吧。

时间: 2024-10-14 07:44:46

Phalcon 我们的动机(Our motivation)的相关文章

C#.Net 设计模式学习笔记之创建型 (一)

1.抽象工厂(Abstract Factory)模式 常规的对象创建方法: //创建一个Road对象 Road road =new Road(); new 的问题: 实现依赖,不能应对"具体实例化类型"的变化. 解决思路: 封装变化点-----哪里变化,封装哪里 潜台词: 如果没有变化,当然不需要额外的封装! 工厂模式的缘起 变化点在"对象创建",因此就封装"对象创建" 面向接口编程----依赖接口,而非依赖实现 最简单的解决方法: class 

组件的详细说明和生命周期ComponentSpecs and Lifecycle

render ReactComponent render() render() 方法是必须的. 当调用的时候,会检测 this.props 和 this.state,返回一个单子级组件.该子级组件可以是虚拟的本地DOM 组件(比如 <div /> 或者 React.DOM.div()),也可以是自定义的复合组件. 你也可以返回 null 或者 false 来表明不需要渲染任何东西.实际上,React渲染一个<noscript> 标签来处理当前的差异检查逻辑.当返回 null 或者 

C#面向对象设计模式纵横谈——2.Singleton 单件(创建型模式)

一:模式分类 从目的来看: 创建型(Creational)模式:负责对象创建. 结构型(Structural)模式:处理类与对象间的组合. 行为型(Behavioral)模式:类与对象交互中的职责分配. 从范围来看: 类模式处理类与子类的静态关系. 对象模式处理对象间的动态关系. 二:Singleton (创建型模式) 单件 1.动机(Motivation) 软件系统中,经常有这样一些特殊的类,必须保证他们在系统中只存在一个实例,才能确保它们的逻辑正确性,以及良好的效率. 如何绕过常规的构造器,

设计模式06: Adapter 适配器模式(结构型模式)

Adapter 适配器模式(结构型模式) 适配(转换)的概念无处不在:电源转接头.电源适配器.水管转接头... 动机(Motivation)在软件系统中,由于应用环境的变化,常常需要将“一些现存的对象”放在新的环境中应用,但是新环境要求的接口是这些现存对象不能满足的.如何应对这种“迁移的变化”?如何既能够利用现有对象的良好表现,同时又能满足新的应用环境所要求的接口? 意图(Intent)将一个类的接口转换成客户希望的另一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一

设计模式学习第一天:23种设计模式(全)

C#常见的设计模式 一.概要: 模式分为三种,设计模式.体系结构模式与惯用法.其中惯用法是一种语言紧密相关的模式,例如,定界加锁模式其实是一种惯用法. 在C#项目开发过程中,很多情况下您已经使用了某些模式,但或许您并不知道自己所使用的这种解决方案是一种已经被总结归纳的模式. 工厂.策略.桥接.模板方法.代理等等23种Gof经典模式是属于设计模式,设计模式的粒度相对较小,基本上用于提高模块内部的可扩展性和可维护性需求 三层.MVC.IoC/DI等属于体系结构模式,粒度比设计模式大,它是从项目的整体

设计模式14:Command 命令模式(行为型模式)

Command 命令模式(行为型模式) 耦合与变化 耦合是软件不能抵御变化的根本性原因.不仅实体对象与实体对象之间存在耦合关系,实体对象与行为操作之间也存在耦合关系. 动机(Motivation) 在软件构建过程中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”.但在某些场合——比如对行为进行“记录.撤销/重做(undo/redo).事务”等处理,这种无法抵御变化的紧耦合是不合适的. 在这种情况下,如何将“行为请求者”与“行为实现者”解耦?将一组行为抽象为对象,可以实现二者之间的解耦. 意

设计模式08: Composite 组合模式(结构型模式)

Composite 组合模式(结构型模式) 对象容器的问题在面向对象系统中,我们常会遇到一类具有“容器”特征的对象——即他们在充当对象的同时,又是其他对象的容器. public interface IBox { void Process(); } public class SingleBox:IBox { public void Process(){...} } public class ContainerBox:IBox { public void Process(){...} public

C#面向对象设计模式纵横谈——6.Prototype 原型模式(创建型模式)

动机(Motivation) 在软件系统中,经常面临着“某些结构复杂的对象”的创建工作.由于需求的变化,这些对象经常面临着剧烈的变化,但他们却拥有比较稳定一致的接口. 如何应对这种变化?如何向“客户程序(使用这些对象的)”隔离出“这些易变对象”,从而使得“依赖这些易变对象的客户程序”不随着需求的改变而改变. 意图(Intent) 使用原型实例指定创建对象的种类,然后通过拷贝这些原型来创建新的对象.   ----<设计模式> GOF 结构(Structure)

C++设计模式 之 “对象创建”模式:Factory Method

part 0 “对象创建”模式 通过“对象创建” 模式绕开new,来避免对象创建(new)过程中所导致的紧耦合(依赖具体类),从而支持对象创建的稳定.它是接口抽象之后的第一步工作. 典型模式 Factory Method Abstract Factory Prototype Builder Part 1 Factory Method 工厂方法 动机(Motivation) 在软件系统中,经常面临着创建对象的工作:由于需求的变化,需要创建的对象的具体类型经常变化. 如何应对这种变化?如何绕过常规的