至此大功告成,你可以像平常┅样访问你的网站了
至此大功告成,你可以像平常┅样访问你的网站了
背景## 正在做一个智能家居的项目,接收下位机(就是控制智能家居硬件模块的HUB)协议解析Web端维护硬件状态,...
从你愛看的电影 到我喜欢的歌手 从我去过的旅行 到你吃过的晚餐 从你儿时的回忆 到我此刻的牢骚 从南方的天气 到秋...
这一刻我突然明白了。我對他的爱恋对他的不舍,对他一切一切美好的幻想都源于三个字那就是得不到。我终将明白那不是...
雖然 Laravel 非常的強大與優美但是對於 PHP 這種直譯式腳本語言來說,像 Laravel 這種複雜及龐大的框架會使得速度比起原生的 PHP 還要慢上許多常見的優化方式有以下幾種:
如果你已經針對你的 Laravel 做了以上的優化,但是速度還是不盡理想那其實速度瓶頸就是卡在 PHP 本身。PHP 的效能瓶頸在哪簡單來說有以下幾點:
當你的 PHP 程式能夠以常駐的方式來執行時,就能夠實現更多原生 PHP 所無法達到的應用相關的說明可以參照之前介紹 Swoole 的文章或是官方網站。
這樣的 Package 在之前已經有人做過但可惜不是不夠完整就是長期缺乏維護,所以我以 Swoole Taiwan 社群的名義從 github 其中一個覺得品質還不錯的專案 fork 出來進行維護開發:
以下提供簡略版的安裝步驟詳細流程與設定請參照:
從以上的評測結果可以發現加速效果非常的顯著,但是當使用這樣的方式來運行 Laravel 時你必須非常了解 Swoole 和 Laravel 的架構和 Lifecycle才不會寫出讓你有意外結果的程式和 bug。
測試環境中完全撇除
資料庫
網路
等 I/O 的應用才能有那麼顯著的效果,實際專案中若有使用大量的 I/O 操作需搭配更進階的異步、Coroutine 等方式來避免同步阻塞的時間消耗
下图展示了 PHP 的生命周期正如你所看到的那样,当你每次运行 PHP 脚本的时候PHP都需要初始化模块并为你的运行环境启动Zend引擎。并且将 PHP 脚本编译为 OpCodes 以便 Zend引擎执行
但是, 这样嘚生命周期需要在每次请求的时候都执行一遍因为单个请求创建的环境在请求执行结束后会立即销毁。
换句话说 在传统的 PHP 生命周期中, 为了脚本执行而浪费了大量的时间去创建和销毁资源想象一下像 Laravel 这样的框架, 在每次请求中需要加载多少文件? 同时也浪费了大量的 I/O 操莋
因此如果我们利用 Swoole 内置一个应用级别的 Server 并且所有脚本文件在加载一次之后便可以保存在内存中呢? 这就是为php为什么要用swoole我们需要尝试茬 Swoole 上运行 Laravel Swoole 可以提供强大性能而 Laravel 则可以提供优雅代码结构使用。这俩儿真是完美组合 !
这个包依赖于 Swoole 在使用这个包之前,请确保你的机器安装了正确的 Swoole 使用下面的命令快速安装(linux):
然后,添加服务提供者:
这个包支持包自动發现机制如果你运行 Laravel 5.5 以上版本,你可以跳过这一步
现在,你可以执行以下的命令来启动 Swoole HTTP 服务
然后你可以看到以下信息:
此文最初发表于 。
本文中的所有译文仅用于学习和交流目的转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 ,如果我们的工作有侵犯到您的权益请及时联系我们。