一、安装 workerman

在项目根目录执行

代码片段
1 行
composer require workerman/workerman

二、创建自定义 artisan 命令来启动 workerman 服务

由于 laravel 不能直接在根目录下执行 php 命令,所以需要创建 artisan 命令用于后面 workerman 服务的开启。

1,生成 WorkermanCommand 文件

代码片段
1 行
php artisan make:command WorkermanCommand

执行以上命令行会在 app/Console/Commands/ 目录下生成 WorkermanCommand.php 文件。

我只实现了 start 命令,其他命令童鞋们自行实现吧。
这里使用了 PHP 类方法的回调。(PHP几种回调写法)
这里我们创建了一个自定义命令 wk [action] ,通过此命令即可开启 workerman 服务。

注册命令

https://laravel-china.org/docs/laravel/5.4/artisan/1245#7ed55e
命令编写完成后,需要注册 Artisan 后才能使用。注册文件为 app/Console/Kernel.php 。在这个文件中, 你会在 commands 属性中看到一个命令列表。要注册你的命令,只需将其加到该列表中即可。当 Artisan 启动时,所有罗列在这个 属性的命令,都会被 服务容器 解析并向 Artisan 注册:

代码片段
4 行
protected $commands = [
        //
		Commands\WorkermanCommand::class
    ];

在这个自定义命令还引用了其他的类文件,如:

代码片段
1 行
$handler = \App::make('handlers\WorkermanHandler');

所以,需要创建一个 WorkermanHandler.php 的文件来处理对应的操作。

2,创建 WorkermanHandler.php
创建文件 app/handlers/WorkermanHandler.php

3,修改 composer.json 文件,让 app/handlers 文件夹下的类文件自动加载。

GDScript3
7 行
"autoload": {
    "classmap": [
        ...
        "app/handlers"
    ],
    ...
},

运行命令类文件自动加载

GDScript3
1 行
composer dump-autoload

至此。workman的命令定义已经完成。

使用:

代码片段
1 行
php artisan wk start

如果看到以下内容,说明 workerman 服务启动正常:

代码片段
8 行
Workerman[artisan] start in DEBUG mode
----------------------- WORKERMAN -----------------------------
Workerman version:3.5.4          PHP version:7.1.4
------------------------ WORKERS -------------------------------
user          worker        listen                   processes status
root          none          tcp://0.0.0.0:20002   1         [OK] 
----------------------------------------------------------------
Press Ctrl+C to quit. Start success.

https://www.jianshu.com/p/00623acb3dad