`
matyhtf
  • 浏览: 82806 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

用PHP来实现PHP的应用服务器

    博客分类:
  • PHP
阅读更多

更新于2013年7月17日:本项目已经有较大进展,目前使用C扩展+PHP代码来构建了完整的应用服务器,有完善的worker进程管理机制、连接池、自动重载代码、热部署等功能。QPS可轻松达到9000以上。同等的LAMP搭配Yii等PHP框架仅能达到600qps。

项目地址:https://github.com/matyhtf/swoole_web_framework

 

PHP Java 比最大的优势是什么?

简单高效, PHP 在请求完成之后会释放所有资源和内存,无须担心内存泄漏。代码的质量无论高低一样运行的很流畅。

但同时这也是 PHP 致命的缺点。一旦请求数量上升,并发很高的时候,快速创建资源,又马上释放,使得 PHP 程序运行效率急剧下降。另外一旦项目的功能的越来越复杂,代码增多后,对于 PHP 也会是灾难。这也是 PHP 的框架为什么没有被 PHP 程序员广泛接受,而 Java 不存在这个问题。再好的框架也会被这种低效的方式拖累,导致系统变慢。

所以想到了使用 PHP 来开发 PHP 的应用服务器,让 PHP 的代码加载到内存后,拥有更长的生命周期,这样建立的数据库连接和其他大的对象,不被释放。每次请求只需要处理很少的代码,而这些代码只在第一次运行时,被 PHP 解析器编译,驻留内存。以后都是直接载入 OPCODE ,让 Zend 引擎直接运行。另外,之前 PHP 不能实现的,数据库连接池,缓存连接池都可以实现。系统的运行效率会大大提高。

经过一段时间研究,目前已经初步得到实现。使用 PHP 本身编写出 HTTP 服务器,以独立服务器方式运行,单个程序页面 ( 有对象生成,数据库连接、 smarty 模板操作 ) 的执行时间由原来的 0.0x 秒,下降到 0.00x 秒。使用 Apache AB 并发 100 测试。比传统 LAMP 方式, Request per Second 高出至少 10 倍。在我的测试机上 (Ubuntu10.04 Inter Core E5300 + 2G 内存 ) Apache 只跑到 83RPS Swoole Server 可以跑到 1150 RPS

http://www.iteye.com/news/21255-swoole-php-framework

分享到:
评论
5 楼 philix 2013-03-25  
想法很好, 但实现起来肯定不会容易.
我也是开发PHP多年,常常也有这方面的感受:PHP没有应用服务器无法开发大规模的应用.
prodo(PHP)这样的服务端组件型开发框架速度很慢,原因就在这里.
然而我感觉swoole框架想通过PHP本身做socket server来解决这个问题,很可能是徒劳. 不是理论不行,而是财力不足最终流产, 应用服务器这种级别的开发非大公司大财力不可!
我认为可行办法是, 在java应用服务器中去做一个脚本servlet , 比如rhino(java), 这样也是用脚本开发,但是却可以依托java应用服务器上成熟的特性.
4 楼 liguangyi 2011-11-04  
长时间运行的PHP程序,其内存管理是个大问题,占用的内存不会自己释放。请问楼主如何解决的?
3 楼 输入法 2011-05-14  
支持!
2 楼 matyhtf 2011-05-14  
achun 写道
这样想过,没敢做,佩服你

感谢你的支持!
目前已经初步实现了原型,在测试环境下,运行稳定。
已经解决了内存泄露的问题,基本上实现了PHP的所有功能,GET,POST请求,form-data文件上传,COOKIE和SESSION。
理论上是行得通的,我会持续做下去。
1 楼 achun 2011-05-13  
这样想过,没敢做,佩服你

相关推荐

    php客户端与服务器实现交互

    本文将深入探讨如何使用PHP实现服务器与客户端的交互,并通过实际的代码实践来阐述这一过程。 首先,我们要理解服务器与客户端的基本交互模型。在Web环境中,客户端通常是浏览器,它向服务器发送HTTP请求(如GET或...

    Web服务器与应用服务器配置(Apache+Tomcat&PHP).pdf

    Web 服务器与应用服务器配置(Apache+Tomcat&PHP) 本文将详细介绍 Web 服务器与应用服务器配置,包括 Apache、Tomcat 和 PHP 的安装、配置和集成。这些技术是 Web 开发和学习的基础,掌握它们可以帮助开发者更好地...

    PHP实现多服务器session共享之memcache共享.rar

    总的来说,"PHP实现多服务器session共享之memcache共享"这个主题涵盖的知识点包括:session管理、分布式存储、memcache的使用、PHP配置、并发控制以及系统扩展性设计。掌握这些知识对于构建高可用、可扩展的Web应用...

    【精品小工具】php实现ssh远程连接服务器并操作服务器

    本篇文章将详细介绍如何使用PHP实现SSH远程连接服务器并执行操作。 首先,PHP本身并不直接支持SSH连接,但我们可以通过第三方库如`phpseclib`来实现这个功能。`phpseclib`是一个纯PHP实现的SSH2和SFTP客户端,它...

    php实现服务器远程管理

    描述中提到"用php+apache+MySQL实现用网页远程管理服务器",这进一步明确了我们的技术栈。Apache是世界上最流行的Web服务器软件,它可以解析并处理PHP代码,将结果返回给客户端。MySQL则是一个强大的关系型数据库...

    PHP服务器.rar

    综上所述,"PHP服务器.rar"这个压缩包可能包含了用易语言编写的PHP服务器实现,对于理解PHP服务器的工作原理、学习服务器源码的编写以及掌握PHP服务器的搭建和优化都有极大的价值。在研究源码时,我们应当关注其架构...

    php服务器接口框架

    在IT行业中,PHP是一种广泛应用的服务器端脚本语言,尤其在构建Web应用程序方面表现出色。当我们谈论"PHP服务器接口框架"时,我们指的是一个结构化的系统,它允许开发者以高效、标准化的方式创建和管理用于与客户端...

    php服务器实现js合并压缩

    "php服务器实现js合并压缩"这个话题聚焦于通过PHP服务器端技术来提升JavaScript(JS)文件的加载速度和效率,从而改善用户体验。这一方法主要通过合并多个JS文件为一个,然后进行压缩,减少HTTP请求次数,节省网络...

    php实现服务器监控源代码

    本资源提供了一种使用PHP实现服务器监控的解决方案,包括前端实时请求处理和后端PHP程序的实现。 首先,让我们详细探讨PHP在服务器监控中的作用。PHP是一种广泛使用的服务器端脚本语言,尤其适用于Web开发。在这个...

    php服务器端网络应用测试

    php服务器端网络应用测试,包含数据库连接和读取数据等常见操作

    php 长连接服务器端

    本文将深入探讨“php 长连接服务器端”的概念及其在即时通讯产品开发中的应用。 首先,我们要理解什么是“长连接”。在传统的HTTP协议中,每次请求与响应之间都建立新的TCP连接,这种模式被称为短连接。然而,短...

    WEB服务器应用指南.rar

    《WEB服务器应用指南》这份资料深入浅出地介绍了WEB服务器的构建、配置和优化,旨在帮助用户更好地理解和操作WEB服务器。下面将详细阐述其中的知识点。 一、WEB服务器基础 WEB服务器是互联网上的一个重要组成部分,...

    PHP用SOCKET实现客户端与服务器端通信

    本文将深入探讨如何使用PHP的SOCKET函数来实现客户端与服务器端之间的通信。 首先,我们要理解什么是SOCKET。SOCKET是操作系统提供的一个接口,它允许应用程序通过网络进行通信。在TCP/IP协议栈中,SOCKET可以看作...

    基于PHP的Android应用服务器端管理系统|Json数据通信

    总结来说,这个基于PHP的Android应用服务器端管理系统通过Json数据通信实现了高效的服务器-客户端交互,包括APK包的上传与更新、图片资源管理等功能,对于Android应用的发布、维护和更新提供了强大的支持。...

    PHP网页的后台OPC客户端通信

    在IT行业中,尤其是在工业自动化领域,OPC(OLE for Process Control)是一种标准接口技术,用于在不同的自动化...通过深入理解OPC协议和相关库的使用,我们可以构建出更加高效、可靠的PHP应用来服务于工业控制需求。

    高性能Php应用开发

    《高性能PHP应用开发》是一本广受好评的PHP性能优化方面的图书,通过介绍PHP的原理和相关的工具集来实现调优性能的目的。它分析和研究了Web应用程序的前端和后端,并系统地提升了其性能和运行效率。《高性能PHP应用...

    Android+php实现图片文件上传服务器

    在Android应用开发中,有时需要将用户在设备上拍摄或选择的图片文件上传到服务器进行存储、处理或分享。这个过程通常涉及到网络通信,而PHP作为服务器端的脚本语言,常用于处理这些请求。本项目是关于如何利用...

    PHP基于Linux的远程管理系统服务器端的实现(源代码+论文).zip

    在本项目中,"PHP基于Linux的远程管理系统服务器端的实现(源代码+论文)",开发者采用PHP编程语言,结合Linux操作系统,构建了一个能够进行远程管理的系统服务器端。这个系统旨在提供一种高效、安全的方式来管理和...

    Android的移动应用与php服务器交互实例源码.rar

    Android应用通常通过HTTP或HTTPS协议与服务器通信,这是通过使用网络请求库,如HttpURLConnection、OkHttp或Volley来实现的。PHP是一种常见的服务器端脚本语言,用于处理来自客户端(Android应用)的请求并返回所需...

    和php空间服务器时间同步.rar

    在PHP空间(即使用PHP的Web服务器)上,时间通常是通过服务器操作系统提供的API获取的。 要实现Delphi客户端与PHP服务器的时间同步,可以采用以下几种方法: 1. **NTP(Network Time Protocol)协议**:NTP是一种...

Global site tag (gtag.js) - Google Analytics