欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Laravel集成Swoole教程

程序员文章站 2022-05-09 12:14:43
1.准备工作 安装 Laravel 本人使用 valet 进行开发,可以使用 进行访问 2.引入 swoole 具体的 swoole 安装请移步官网进行下载,编译,安装,这里不多阐述了。 1. 在项目更目录创建一个 server 文件夹,然后在该文件夹中创建 http_server.php 文件,具 ......

1.准备工作

安装 laravel

laravel new laravel-swoole

 

   

本人使用 valet 进行开发,可以使用

laravel-swoole.test

 

   

进行访问

2.引入 swoole

具体的 swoole 安装请移步官网进行下载,编译,安装,这里不多阐述了。

1. 在项目更目录创建一个 server 文件夹,然后在该文件夹中创建 http_server.php 文件,具体的文件内容如下

<?php

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

$http->set([

    'worker_num' => 8,

    'max_request' => 5000,

//    'document_root' => '/users/apple/code/teacher_project/swoole_live/resources/live/',

//    'enable_static_handler' => true,

]);

//工作进程启动

$http->on('workerstart', function ($serv, $worker_id) {

    //加载index文件的内容

    require __dir__ . '/../vendor/autoload.php';

    require_once __dir__ . '/../bootstrap/app.php';

});

//监听http请求

$http->on('request', function ($request, $response) {

    //server信息

    if (isset($request->server)) {

        foreach ($request->server as $k => $v) {

            $_server[strtoupper($k)] = $v;

        }

    }

    //header头信息

    if (isset($request->header)) {

        foreach ($request->header as $k => $v) {

            $_server[strtoupper($k)] = $v;

        }

    }

    //get请求

    if (isset($request->get)) {

        foreach ($request->get as $k => $v) {

            $_get[$k] = $v;

        }

    }

    //post请求

    if (isset($request->post)) {

        foreach ($request->post as $k => $v) {

            $_post[$k] = $v;

        }

    }

    //文件请求

    if (isset($request->files)) {

        foreach ($request->files as $k => $v) {

            $_files[$k] = $v;

        }

    }

    //cookies请求

    if (isset($request->cookie)) {

        foreach ($request->cookie as $k => $v) {

            $_cookie[$k] = $v;

        }

    }

    ob_start();//启用缓存区

    //加载laravel请求核心模块

    $kernel = app()->make(illuminate\contracts\http\kernel::class);

    $laravelresponse = $kernel->handle(

        $request = illuminate\http\request::capture()

    );

    $laravelresponse->send();

    $kernel->terminate($request, $laravelresponse);

    $res = ob_get_contents();//获取缓存区的内容

    ob_end_clean();//清除缓存区

    //输出缓存区域的内容

    $response->end($res);

});

$http->start();

 

   

在路由文件加入路由:

route::get('/test1', 'userscontroller@test');

route::get('/test2','userscontroller@test2');

 

   

在控制器添加方法:

/**

     * 测试1

     * @param request $request

     * @return string

     */

    public function test(request $request)

    {

        return view('test');#在你的视图文件夹创建test.blade.php

    }

    /**

     * 测试2

     * @param request $request

     * @return string

     */

    public function test2(request $request)

    {

        return 'hello world2:' . $request->get('name');

    }

 

   

3. 启动 swoole

在终端下输入:

php server/http_server.php

 

   

访问浏览器:

http://127.0.0.1:9501/test1

http://127.0.0.1:9501/test2?name=jelly

 

   

对应的结果如下:

访问 test1 路由

Laravel集成Swoole教程

访问 test2 路由

Laravel集成Swoole教程