laravel框架与workerman的整合

laravel框架与workerman的整合

  • 最近更新2018年07月12日

一、配置

首先运行命令检测当前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目录下,进行如下修改:

<?php
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

 

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

 

分享到 :
相关推荐

发表回复

登录... 后才能评论