Giter Club home page Giter Club logo

stone's Introduction

关于Stone

Stone是一个优化Laravel框架性能的方案, 能大幅提升基于Laravel的程序性能,使Laravel能轻松应对高并发的使用场景。

优化原理

如果你正在考虑框架性能优化的问题, 你应该对PHP应该已经有足够的了解。 如你所知, PHP每次请求结束, 都会释放掉执行中建立的所有资源。这样有一个很大的好处:PHP程序员基本不用费力去考虑资源释放的问题,诸如内存,IO句柄,数据库连接等,请求结束时PHP将全部释放。PHP程序员几乎不用关心内存释放的问题,也很难写出内存泄露的程序。这让PHP变得更加简单容易上手, 直抒心意。但是同时也带来了一个坏处:PHP很难在请求间复用资源, 类似PHP框架这种耗时的工作, 每次请求都需要反复做——即使每次都在做同样的事情。也正因为如此,在PHP发展过程中,关于是否使用框架的争论也从未停止过。

Stone主要优化的就是这个问题。 在框架资源初始化结束后再开启一个FastCGI服务,这样, 新的请求过来是直接从资源初始化结束后的状态开始,避免每次请求去做资源初始化的事情。所以, 本质上, Stone运行时是常驻内存的,它和PHP-FPM一样,是一个FastCGI的实现,不同的是, FPM每次执行请求都需要重新初始化框架, Stone直接使用初始化的结果。

同样,事情总是有好有坏。使用Stone后的坏处是:PHP编程变得更难了。你需要考虑内存的释放,需要关心PHP如何使用内存。甚至, 你需要了解使用的框架,以免『不小心』写出让人『惊喜』的效果。同时, PHP的调试变得更难, 因为每次修改程序后需要重启进程才能看到效果。事实上,开发Stone时针对调试这方面做了不少工作。好处是:程序的性能得到极大的提高。

当然, 客观上的一些利好因素是:

  • PHP的内存回收已经相当稳定和高效
  • Swoole稳定性已经在相当多的项目中得到验证
  • Laravel代码质量相当高

正是因为有了这些条件, 才使得Stone的出现成为可能, 感谢这个伟大的开源时代!

性能对比

应用类型 原始Laravel Stone-Web Stone-Server 原生php直接echo
laravel5 默认页面 150 3000 -- --
laravel5 简单接口 150 3000 8500 9500
laravel4 实际项目简单页面 70 1000 -- --
laravel4 简单接口 120 -- 8200 9500
laravel4 实际项目首页 35 380 -- --
  • 以上单位全部为RPS
  • Stone相对于原始的Laravel有相当可观的提升
  • 即使和一个简单的echo相比, Stone性能损失仅10%左右

如果你对此感兴趣, 继续了解Stone在线中文文档 或者马上安装吧。

资源

Stone在线中文文档 (更新及时,推荐)

联系反馈

rssidea(at)qq.com

stone's People

Contributors

chefxu avatar

Watchers

洪建家 avatar James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.