一、配置
首先运行命令检测当前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
如果出现如下界面内容,说明你已经成功了。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。