`
bardo
  • 浏览: 379390 次
  • 性别: Icon_minigender_1
  • 来自: 上海
博客专栏
D1407912-ab64-3e76-ae37-b31aa4afa398
浅述PHP设计模式
浏览量:11831
9d6df9f7-91da-3787-a37c-0e826525dd5d
Zend Framewor...
浏览量:10141
85b628bd-a2ed-3de2-a4b1-0d34985ae8b6
PHP的IDE(集成开发环...
浏览量:9529
社区版块
存档分类
最新评论

三大开源,帮助助你提升PHP网站性能

    博客分类:
  • PHP
阅读更多

这里给大家介绍大型网站架构中可能需要用到的提升性能的三大开源:

(1)ProtoBuf,网址是:

http://code.google.com/p/protobuf/

相关介绍:

什么是protocol buffers?

Protocol buffers是一种可伸缩,高效的,自动化的结构化数据序列化机制,它比较像XML但是更小,更快,更简单。定义好你的数据结构,然后你就可以使用生成的特殊的源代码读写你的结构化数据,数据来源可以是各种数据流,也可以使用各种编程语言。你甚至可以在不破坏使用旧格式编译并已经部署的程序的情况下更新数据结构。

他们如何工作的?
通过在.proto文件中定义protocol buffer消息类型,说明需要被序列化的信息需要保持什么样的结构。一个protocol buffer消息是一小片信息的逻辑记录,包含一系列的名称-值对。这里是一个非常基础的例子,他定义了包含个人信息的消息:

message Person {  required string name = 1;  required int32 id = 2;  optional string email = 3;  enum PhoneType {    MOBILE = 0;    HOME = 1;    WORK = 2;  }  message PhoneNumber {    required string number = 1;    optional PhoneType type = 2 [default = HOME];  }  repeated PhoneNumber phone = 4;}可以看到,消息格式很简单 - 每个消息有一个或多个编号的字段,每个字段有一个名字和一个类型,类型可以是数字(整形或浮点),布尔,字符串,原生字节或是其他protocol buffer消息类型(如上例)。你可以指明可选字段,必选字段和重复字段。关于编写.proto文件的更多信息请见Protocol Buffer语言指导。

定义好消息后,就可以运行针对你的程序语言的protocol buffer编译器来编译.proto文件。这些类对每个字段提供简单存取器(例如query()和set_query())和序列化整个结构到原生字节或从原生字节解析结构的方法的。然后你可以在程序中用这个Persion类生成,序列化或者从protocl buffer消息中取得Person对象。你可能写这样的代码来操作:

Person person;person.set_name("John Doe");person.set_id(1234);person.set_email("jdoe@example.com");fstream output("myfile", ios::out| ios::binary);person.SerializeToOstream(&output);然后你可以马上读回消息:

fstream input("myfile", ios::in| ios::binary);Person person;person.ParseFromIstream(&input);cout <<"Name: "<< person.name()<< endl;cout <<"E-mail: "<< person.email()<< endl;你可以在消息中添加新的字段而不破坏向后的兼容性。老的程序在解析时简单的忽略新字段。所以如果你使用protocol buffers作为你的通讯协议的数据格式,你可以扩展你的协议而不用担心破坏既有的代码。

你可以在API参考找到使用生成的protocol buffer代码的完整的参考,在Protocol Buffer编码有更多关于protocol buffer消息如何编码的信息。

Why not just use XML?干嘛不直接用XML?
相较于XML,Protocol buffers在序列化结构化数据方面有许多优点。它:

更简单
3至10倍小
快20-100倍
更少的模糊性
对编程来讲,生成数据访问类更容易使用。
比如说,你想建模一个person,它有name和email。如果用XML,你需要写:

  <person>    <name>John Doe</name>    <email>jdoe@example.com</email>  </person>然而对应的protocol buffer消息( protocol buffer 文本格式)是这样:

# Textual representation of a protocol buffer.# This is *not* the binary format used on the wire.person {  name: "John Doe"  email: "jdoe@example.com"}当这个消息被编码为二进制格式(文本格式)后,可能只有28字节长,并且解析只需要大约100-200纳秒。XML的版本至少69字节不包括空格,需要花费5,000-10,000纳秒解析。

Also, manipulating a protocol buffer is much easier:同样,操作protocol buffer也容易得多:

  cout <<"Name: "<< person.name()<< endl;  cout <<"E-mail: "<< person.email()<< endl;而用XML你得这样写:

  cout <<"Name: "       << person.getElementsByTagName("name")->item(0)->innerText()       << endl;  cout <<"E-mail: "       << person.getElementsByTagName("email")->item(0)->innerText()       << endl;然而,protocol buffers并不总是比XML好 - 例如,protocol buffers就不适合建模基于文本的有标记文档(如HTML),因为你很难在文字中插入结构信息。另外,XML是可读的并且易于手工编辑的;protocol buffers,至少在原生格式上不是这样。XML还是(某种程度上)自描述的。而protocol buffer仅仅在你有关于它的定义文件(.proto文件)的时候才有意义。

听起来对我有用!我怎么开始用它?
下载软件包 - 它包含了Java, Python, C++的protocol buffers编译器的所有源代码,还有用于I/O和测试的类。构建和安装它的方法请参见附带的README。

这些准备好以后,你就可以试试看针对你使用的编程语言的教程,它将带你一步一步创建一个使用protocol buffers的简单应用。

一点历史
Protocol buffers最初是在Google开发出来处理一个索引服务器的request/response协议的。在protocol buffers以前,有一个手动marshalling/unmarshalling请求/响应的处理格式,结果是看起来非常丑陋的代码,就像:

if(version ==3){   ... }elseif(version >4){   if(version ==5){     ...   }   ... }显式的格式化的协议也会把新版本协议的发布搞的很复杂,因为开发者必须保证在请求发起者和实际处理者这两端启用新协议之前,它们之间的所有的服务器,都必须理解新版本的协议。

Protocol buffers被设计来解决许多这样的问题:

新的字段可以很容易被引入,不需要检查新增数据的中间服务器可以像之前一样解析原有数据并一起传输他们,不需要知道新的字段。
格式是自描述的,可以被广泛的编程语言处理(C++, Java, 等)

然而,用户仍然需要手写他们自己的解析代码。

随着系统的进化,它已经有了一些其他特性和用途:

自动生成的序列化和反序列化代码,用户可以不用手工编写解析代码了。
除了被用作短期的RPC(远程过程调用)请求,人们开始用protocol buffers作为一种便利的自描述格式来持久化存储数据(比如Bigtable)。

服务器的RPC接口开始声明成为protocol文件的一个部分,还有protocol编译器生成的类,用户可以用实际的实现重写他们。
Protocol buffers现在是Google交流数据的主要交际语 - 撰写本文时,Google的代码树中有12,183个.proto文件,包含有48,162个不同的消息类型定义。它们被用在RPC系统和各种存储系统的数据的持久化的存储。

 

(2)fastCgiRpc 网址如下

http://code.google.com/p/fastcgirpc/

相关介绍

 

fastRPC是基于FastCGI通讯协议的RPC框架,它适用多人合作开发的高并发网站项目。

通过这个RPC框架,可以将MVC思想中的Model后置于RPC Server层转型为服务,以协议方式暴露Model的方法给前端的View、Control操作。

(3)Page Speed 网址如下:

http://code.google.com/intl/zh-CN/speed/page-speed/

 

相关介绍:

什么是 Page Speed?
Page Speed 是开源 Firefox/Firebug 插件。网站管理员和网络开发人员可以使用 Page Speed 来评估他们网页的性能,并获得有关如何改进性能的建议。
 
  Page Speed 是如何工作的?
Page Speed 对网站的网络服务器配置和前端代码执行若干测试。这些测试基于一组已知可增强网页性能的最佳实践。在网页上运行 Page Speed 的网站管理员会获得一组针对各网页的分数,以及有关如何改善网页性能的有用建议。
 
  为什么要使用 Page Speed?
利用 Page Speed,您可以:

使您的网站更快速。
使互联网用户始终关注您的网站。
减少您的带宽成本和托管成本。
改善网络!
 

 

 

 

 

 

0
0
分享到:
评论

相关推荐

    开源的php个人网站系统

    为了提升网站性能,可以采用缓存技术(如Memcached或Redis)、优化数据库查询、使用CDN服务、压缩静态资源等方式。 总的来说,开源的PHP个人网站系统为个人开发者提供了自由、灵活的建站工具。通过深入理解PHP语言...

    PHP 教程 一个高性能的PHP框架 php快速开发框架 免费开源的轻量级、高性能PHP框架

    【PHP框架】是用于构建动态网站和Web应用程序的软件工具,它简化了代码编写和维护过程,提高了开发效率。PHP框架通常包含预定义的结构、类库和工具,以促进代码重用和遵循最佳实践。在众多PHP框架中,一些以【高性能...

    开源的PHP企业网站系统源码

    【标题】:“开源的PHP企业网站系统源码” 在当今互联网技术日新月异的时代,开源的PHP企业网站系统源码成为了许多开发者和中小企业构建在线平台的首选。PHP,全称为“PHP:Hypertext Preprocessor”,是一种广泛...

    PHP实现的一个开源的企业门户网站

    一般来说,企业门户网站可能基于MVC(Model-View-Controller)架构设计,将业务逻辑、数据和界面展示分离开来,提高代码的可读性和可维护性。 5. **CMS内容管理系统** CMS(Content Management System)是用于...

    PHP企业网站源码开源问题

    他们可以参与到项目的开发和维护中,提交bug修复、功能增强或优化性能,这不仅有助于个人技能的提升,也有助于整个社区的繁荣。 总的来说,PHP企业网站源码开源问题的核心是利用开源的力量,降低建站成本,提高开发...

    企业网站程序 PHP开源版

    10. **扩展性**:开源社区活跃,有很多第三方插件和模块可供选择,可增强网站的功能,如社交媒体集成、在线支付等。 在压缩包文件“hzcnnet”中,可能包含了企业网站程序的核心文件、数据库配置、样式表(CSS)、...

    免费开源企业网站免费开源企业网站开源

    5. **数据分析**:开源工具如Google Analytics可以集成到网站中,帮助企业追踪用户行为,分析网站性能,指导优化决策。 6. **API集成**:开源环境允许企业与各种第三方服务(如支付网关、社交媒体、CRM系统)集成,...

    php开源留言板

    开发者可以通过阅读和分析代码,了解其工作原理,学习到PHP编程技巧和Web开发实践,同时也可以贡献自己的代码,提升软件的功能和性能。 【留言板】是网站上一个重要的互动元素,它为访客提供了与网站所有者或者其他...

    【PHP项目源码-毕业设计期末大作业】(开源php企业网站程序)恒准电脑公司网站

    在这个项目中,我们讨论的是一个开源的PHP企业网站程序,特别适用于毕业设计或期末大作业,它被称为“恒准电脑公司网站修正版”。 这个项目版本为Build20070909_hzcnnet(final),表明它是在2007年9月9日完成的一个...

    PHP开源MMRPG网游

    可能还会用到现代前端框架,如React或Vue.js,来提高用户体验和性能。 8. **性能优化** 对于大规模的MMORPG,性能优化至关重要。开发者需要关注服务器负载平衡、缓存策略、代码优化等多个方面,以确保游戏流畅运行...

    PHP+MYSQL开源B2B商城

    【B2Bbuilder_v6.3】这个文件名可能是该开源B2B商城系统的特定版本号,表示这是第六次重大更新的第三个次要版本。通常,软件版本号的升级会伴随着新功能的添加、已知问题的修复以及性能优化。因此,B2Bbuilder_v6.3...

    114开源导航,php实现

    【标题】"114开源导航,php实现"是一个基于PHP编程语言开发的开源导航网站系统,它提供了构建导航网站的基础框架和功能模块,适用于学习PHP技术以及了解导航网站架构的初学者和开发者。 【描述】中提到的"114开源...

    Biny腾讯开源高性能超轻量级PHP框架

    **Biny腾讯开源高性能超轻量级PHP框架** 在当今的Web开发领域,PHP作为一种流行的后端编程语言,拥有众多的框架支持。其中,Biny脱颖而出,它是一款由腾讯开源的高性能、超轻量级PHP框架,专为快速构建现代Web应用...

    大道PHP:LAMP+Zend+开源框架整合开发与实战(随书光盘源码2).rar

    理解Zend框架的MVC(Model-View-Controller)模式,以及其服务、控制器、模型和视图的交互,有助于提高开发效率。 4. 开源框架整合:除了Zend,书中的实战部分还可能涵盖了其他如Symfony、Laravel、Yii等流行的PHP...

    《PHPer》开源杂志

    6. PHP性能优化:探讨如何通过代码优化、缓存策略、负载均衡等手段提升PHP应用的性能。 7. PHP安全:涵盖输入验证、防止SQL注入、XSS攻击防护、CSRF防范等,保障Web应用的安全性。 8. PHP开源项目:介绍和分析热门...

    php OA办公系统源码,php开源源码,正版购买,最后修改版,功能完好版

    使用开源OA系统的企业,可以加入开发者社区,获取技术帮助,参与讨论,分享经验。对于初次接触的用户,官方提供的培训和教程也能帮助快速上手。 总结,PHP OA办公系统源码为企业提供了灵活、高效的协同工作平台,...

    php开源电子商务网站

    【标题】:“php开源电子商务网站”这一主题主要涵盖了基于PHP编程语言开发的开源电子商务平台,这类平台因其...通过深入学习和实践这些知识点,你可以构建和管理自己的电子商务网站,实现个性化需求,提高业务效率。

    开源php网盘

    10. 性能优化:例如文件的分块上传和下载、CDN加速、负载均衡等,以提升用户体验。 开源php网盘项目如iBarn,可能会包含以上部分或全部功能,并且通过社区贡献不断迭代更新。如果你打算部署这样的系统,你需要有...

    PHP极速链站群3.0系统 开源版

    PHP极速链站群3.0系统能够帮助用户高效地管理这些网站,统一进行内容更新、SEO优化、数据同步等操作,极大地提升了管理效率。 3. **3.0版本的改进**:每个版本迭代通常会带来性能提升、新功能添加和已知问题的修复...

    基于PHP的辰光PHP客服tb多商户全开源源码.zip

    对于这个客服系统,开源特性意味着任何具备PHP编程技能的人都可以检查代码,找出潜在的问题,添加新功能,或者优化性能,从而提升整个系统的灵活性和定制性。 从文件名称"132673654514734096"来看,这可能是一个...

Global site tag (gtag.js) - Google Analytics