php larval workerman,laravel框架与workerman的整合

本文指导如何在MacOS系统上,基于PHP7环境,使用Composer安装Workerman并结合Laravel创建一个命令行服务。通过 artisan 命令创建并注册WorkermanHttpServer命令,实现HTTP服务器的启动和停止。最终通过调试和常驻后台运行验证配置成功。
摘要由CSDN通过智能技术生成

一、配置

首先运行命令检测当前cli环境是否支持:

curl -Ss http://www.workerman.net/check.php | php

php -m //查看当前cli环境php模块

某些集成环境cli的配置文件和浏览器的配置文件路径不同,如mamppro.cli下运行php --ini查看,本实例所在环境是MacOS系统,PHP7的环境下进行的(Linux与此类似,Windows下有些不同,注意下面的区别部分,但建议使用Linux或Mac系统,经过测试,Windows下有很多功能不支持)。

二、使用composer安装workerman

cd 你的工作路径/你的laravel框架文件夹 (要使用命令行模式)

composer require workerman/workerman

三、使用artisan command建立

因为workerman服务启动是基于cli命令行模式,所以我们得用laravel的artisan来实现。在Laravel中创建command,以下例子是创建一个简单的httpserver,其他服务请查看官方文档(需要说明的是laravel5.3改成command了,5.2 5.1 是console,当前所使用的是5.4版本)。

php artisan make:command WorkermanHttpServer

进入App\Console\Commands目录下,进行如下修改:

namespace App\Console\Commands;

use Illuminate\Console\Command;

use Workerman\Worker;

use App;

class WorkermanHttpServer extends Command

{

protected $httpserver;

/**

* The name and signature of the console command.

*

* @var string

*/

protected $signature = 'workerman:httpserver {action} {--daemonize}';

/**

* The console command description.

*

* @var string

*/

protected $description = 'workerman httpserver';

/**

* Create a new command instance.

*

* @return void

*/

public function __construct()

{

parent::__construct();

}

/**

* Execute the console command.

*

* @return mixed

*/

public function handle()

{

//因为workerman需要带参数 所以得强制修改

global $argv;

$action=$this->argument('action');

if(!in_array($action,['start','stop'])){

$this->error('Error Arguments');

exit;

}

$argv[0]='workerman:httpserver';

$argv[1]=$action;

$argv[2]=$this->option('daemonize')?'-d':'';

$this->httpserver=new Worker('http://0.0.0.0:8080');

// App::instance('workerman:httpserver',$this->httpserver);

$this->httpserver->onMessage=function($connection,$data){

$connection->send('laravel workerman hello world');

};

Worker::runAll();

}

}

接下来,注册command,文件位置在“App\Console\Kernel.php”文件添加刚才创建的command。

protected $commands = [

Commands\WorkermanHttpServer::class

];

最后就是测试运行了。

#debug运行

php artisan workerman:httpserver start

#常驻后台运行

php artisan workerman:httpserver start --daemonize

如果出现如下界面内容,说明你已经成功了。

7c90076870d647d61bb9ee63cc2537b7.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值