5分钟提高Laravel框架性能10倍以上

ChefXu 发布于 2016/05/03 14:18
阅读 1K+
收藏 1
PHP

大家好, 这是我最近利用闲暇时间完成的方案,可能有点标题党的意思。实际上10倍是我各种应用测试的最差结果,因为包含了大量的数据库查询。单纯的框架性能,提升可以达到30倍。 而如果是简化的接口请求,性能相差更大。方案的核心思想已经在线上稳定运行超过3个月了。 因为希望能够简单地对laravel做一下优化,最近阅读理解了laravel5的大部分代码, 才算基本完成。 方案实现过程中出现了很多反复, 目前的方案可能也不够好, 希望对此感兴趣的朋友多多提意见。

项目的大概原理是:在框架资源初始化结束后再开启一个FastCGI服务,这样, 新的请求过来是直接从资源初始化结束后的状态开始,避免每次请求去做框架资源初始化的事情。

虽然是针对laravel, 实际上这个方案应该适用于所有性能不够优秀的框架。

项目地址: https://github.com/chefxu/stone
一个基于laravel5的使用例子:https://github.com/chefxu/stone-laravel-example

加载中
0
yak
yak
swoole 是怎么处理内存泄漏的?
0
ChefXu
ChefXu

引用来自“yak”的评论

swoole 是怎么处理内存泄漏的?

swoole本身并不存在内存泄露, 你说的是使用swoole后应用内存泄露吧? 
简单粗暴的方法就是设定下每个进程处理请求的最大次数, 这样达到次数后进程就会自然销毁, 内存就会释放, 这样可以把内存占用控制在一定范围内。

如果是打算查找内存泄露的问题, 就要看看哪些对象在请求结束后还被引用。 比如, 在laravel中, $cookie = Cookie::make('key', 'value') 会自动建立一个对象, 这个对象会被Facade, Application,以及程序调用的上下文引用。 程序退出后, Facade和Application中对于cookie的引用仍然存在, 如果不采取处理的话, 就会发生内存泄露。

不过好在现在PHP这方面已经相当稳定, 只要小心处理, 不会有什么问题的。

返回顶部
顶部