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 \LaravelFly\Greedy\Kernel { }
# } else {
# class WhichKernel extends \LaravelFly\Kernel { }
# }
# } else {
# class WhichKernel extends HttpKernel { }
# }
#
# class Kernel extends WhichKernel
#
vendor/bin/start-laravelfly-server
好了, 我们的 laravel 项目现在是在 Swoole 扩展上运行了, 几乎没有什么 bug, 不过, 经过测试发现 debugbar 有些许问题, debugbar 调试过程记录的查询历史不会在请求完成后清空, 而会继承到下一次请求, 这其实是 Swoole 并不会在每次请求完成后回收创建的资源, 而我们只需要在 config/laravelfly.php 声明需要在单次请求完成后回收的实例即可.