現代化程式設計 — 在 Swoole 上開發 Laravel 框架的應用

ARGUS發表於2019-02-16

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 宣告需要在單次請求完成後回收的例項即可.

相關文章