Laravel
Laravel 是非常現代化的一套 PHP 框架, 基於 composer 的構建方式, 其很多核心依賴並非完全 Laravel 自己所維護, 而依賴於 symfony/http-, eloquent/ 等較成熟的 Library, 以此實現現代化框架的集眾優於一身(站在巨人肩上)的特點.
LaravelFly
經過前面的瞭解, 我們已經知道 Swoole 給 PHP 帶來的無可比擬的優勢, 但因為 Swoole 一些侷限, 我們無法將其直接用於成熟的 PHP 框架, 而需要進行部分改造方可在 Swoole 上執行. 而 LaravelFly 正是這樣一款工具(or, you can call it something else, anyway).
好了, 下面我們開始操作吧.
先來新建一個全新的 Laravel
# Composer 下載 Laravel 安裝包:
composer global require "laravel/installer"
# 新建專案
laravel new test
cd test/
composer update
cp .env.example .env
vim .env # 修改資料庫配置
php artisan key:generate
php artisan serve
這時我們通過 http://localhost:8000 就可以訪問這份新的 laravel 專案了
但我們還得繼續往下
composer require "scil/laravel-fly":"dev-master"
vendor/bin/publish-laravelfly-config-files
vim app/Http/Kernel.php
#########################################
# class Kernel extends HttpKernel
# -->
#
#
# if (defined(`LARAVELFLY_GREEDY`)) {
# if (LARAVELFLY_GREEDY) {
# class WhichKernel extends LaravelFlyGreedyKernel { }
# } else {
# class WhichKernel extends LaravelFlyKernel { }
# }
# } else {
# class WhichKernel extends HttpKernel { }
# }
#
# class Kernel extends WhichKernel
#
vendor/bin/start-laravelfly-server
好了, 我們的 laravel 專案現在是在 Swoole 擴充套件上執行了, 幾乎沒有什麼 bug, 不過, 經過測試發現 debugbar 有些許問題, debugbar 除錯過程記錄的查詢歷史不會在請求完成後清空, 而會繼承到下一次請求, 這其實是 Swoole 並不會在每次請求完成後回收建立的資源, 而我們只需要在 config/laravelfly.php 宣告需要在單次請求完成後回收的例項即可.