看完这篇文章,就知道给 Laravel 开启 Swoole还可以不用三方包

本文介绍了如何在 Laravel 项目中直接整合 Swoole,避免使用第三方包。通过修改配置和解决请求处理问题,实现了 Swoole 的常驻服务和异步操作。在测试中发现性能提升,但也存在如 flash 数据和 PDO 查询等问题,需要针对性地进行优化。
摘要由CSDN通过智能技术生成

Swoole 是一款优秀的 PHP 扩展,利用其可以实现原生 PHP 很难做到的常驻服务和异步。正好我有个 Laravel 项目可以折腾,就研究了下。

点此加入我的企鹅群

Laravel 项目是基于 composer 的,所以我先帖下我的 composer.json 中的 require 声明:

{
   
    "require": {
   
        "php": "^7.1.3",
        "cybercog/laravel-love": "^5.1",
        "dingo/api": "~v2.0.0-alpha2",
        "doctrine/dbal": "^2.8",
        "fideloper/proxy": "^4.0",
        "guzzlehttp/guzzle": "^6.3",
        "infyomlabs/adminlte-templates": "5.6.x-dev",
        "infyomlabs/laravel-generator": "5.6.x-dev",
        "jeroennoten/laravel-adminlte": "^1.23",
        "laravel/framework": "5.6.*",
        "laravel/tinker": "^1.0",
        "laravelcollective/html": "^5.6.0",
        "lshorz/luocaptcha": "^1.0",
        "overtrue/laravel-lang": "v3.0.08",
        "overtrue/laravel-wechat": "^4.0",
        "predis/predis": "^1.1",
        "spatie/laravel-permission": "^2.17",
        "tymon/jwt-auth": "~1.0.0-rc.2",
        "yajra/laravel-datatables-buttons": "^4.0",
        "yajra/laravel-datatables-oracle": "^8.7"
    }
}

如果我们要开启 swoole,我们可选的包有这些:

swooletw/laravel-swoole

hhxsv5/laravel-s

但一般来说,项目中需要常驻容器的服务与每次均需重新构建的服务并不一样,所以我才剑走偏锋。

起步

我们需要将 public/index.php 替换成如下

<?php

use Illuminate\Http\Request;
use Illuminate\Http\Response;

define('LARAVEL_START', microtime(true));
require __DIR__ . '/../vendor/autoload.php';
$app = require_once __DIR__ . '/../bootstrap/app.php';

class Laravel
{
   
    /**
     * Illuminate\Foundation\Application
     *
     * @var \Illuminate\Foundation\Application
     */
    public $app;

    /**
     * App\Http\Kernel
     *
     * @var \App\Http\Kernel
     */
    public $kernel;

    /**
     * App\Http\Requests\Request
     *
     * @var \App\Http\Requests\Request
     */
    public $request;

    /**
     * Illuminate\Http\JsonResponse
     *
     * @var \Illuminate\Http\JsonResponse
     */
    public $response;

    /**
     * 构造
     *
     * @param \Illuminate\Foundation\Application $app
     */
    public function __construct(\Illuminate\Foundation\Application $app)
    {
   
        $this->app = $app;
    }

    /**
     * RUN
     *
     * @return void
     */
    public function run()
    {
   
        \Swoole\Runtime::enableCoroutine(true);

        $http = new swoole_http_server('127.0.0.1', '80');

        $http->set([
            'document_root' => public_path('/'),
            'enable_static_handler' => true,
        ]);

        $http->on('request', function ($req, $res) {
   
            try {
   
                $kernel = $this->app
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值