laravel框架中引入Workerman
1.安裝Workerman
首先在laravel根目錄下安裝Workerman
命令:$ composer require workerman/gateway-worker
2.創建 Workerman 啟動文件
創建一個 artisan 命令行工具來啟動 Socket 服務端,在 app/Console/Commands 目錄下建立命令行文件。
<?php
namespaceApp\Console\Commands;useGatewayWorker\BusinessWorker;useGatewayWorker\Gateway;useGatewayWorker\Register;useIlluminate\Console\Command;useWorkerman\Worker;classWorkermanCommandextendsCommand{protected$signature='workman {action} {--d}';protected$description='Start a Workerman server.';publicfunctionhandle(){global$argv;$action=$this->argument('action');$argv[0]='wk';$argv[1]=$action;$argv[2]=$this->option('d')?'-d':'';$this->start();}privatefunctionstart(){$this->startGateWay();$this->startBusinessWorker();$this->startRegister();Worker::runAll();}privatefunctionstartBusinessWorker(){$worker=newBusinessWorker();$worker->name='BusinessWorker';$worker->count=1;$worker->registerAddress='127.0.0.1:1236';$worker->eventHandler= \App\Workerman\Events::class;}privatefunctionstartGateWay(){$gateway=newGateway("websocket://0.0.0.0:2346");$gateway->name='Gateway';$gateway->count=1;$gateway->lanIp='127.0.0.1';$gateway->startPort=2300;$gateway->pingInterval=30;$gateway->pingNotResponseLimit=0;$gateway->pingData='{"type":"@heart@"}';$gateway->registerAddress='127.0.0.1:1236';}privatefunctionstartRegister(){newRegister('text://0.0.0.0:1236');}}
?
3.創建事件監聽文件
創建一個 app/Workerman/Events.php 文件來監聽處理 workman 的各種事件。
<?php
namespaceApp\Workerman;classEvents{publicstaticfunctiononWorkerStart($businessWorker){}publicstaticfunctiononConnect($client_id){}publicstaticfunctiononWebSocketConnect($client_id,$data){}publicstaticfunctiononMessage($client_id,$message){}publicstaticfunctiononClose($client_id){}}
?
?
4. 啟動 Workerman 服務端
在命令行里面執行,支持的命令大概有 start|stop|restart,其中 -d 的意思是 daemon 模式。
$ php artisan workman start -d
當你看到如下結果的時候,workman 已經啟動成功了。
Workerman[wk] start in DEBUG mode
-----------------------WORKERMAN----------------------------- Workerman version:3.5.11PHP version:7.1.11------------------------WORKERS------------------------------- user worker listen processes status root Gateway websocket://0.0.0.0:2346 1 [OK] root BusinessWorker none 1[OK] root Register text://0.0.0.0:1236 1 [OK]---------------------------------------------------------------- Press Ctrl+C to stop. Start success. onWorkerStart
?
?
<?phpnamespaceApp\Console\Commands;useGatewayWorker\BusinessWorker;useGatewayWorker\Gateway;useGatewayWorker\Register;useIlluminate\Console\Command;useWorkerman\Worker;classWorkermanCommandextendsCommand{protected$signature='workman {action} {--d}';protected$description='Start a Workerman server.';publicfunctionhandle(){global$argv;$action=$this->argument('action');$argv[0]='wk';$argv[1]=$action;$argv[2]=$this->option('d')?'-d':'';$this->start();}privatefunctionstart(){$this->startGateWay();$this->startBusinessWorker();$this->startRegister();Worker::runAll();}privatefunctionstartBusinessWorker(){$worker=newBusinessWorker();$worker->name='BusinessWorker';$worker->count=1;$worker->registerAddress='127.0.0.1:1236';$worker->eventHandler= \App\Workerman\Events::class;}privatefunctionstartGateWay(){$gateway=newGateway("websocket://0.0.0.0:2346");$gateway->name='Gateway';$gateway->count=1;$gateway->lanIp='127.0.0.1';$gateway->startPort=2300;$gateway->pingInterval=30;$gateway->pingNotResponseLimit=0;$gateway->pingData='{"type":"@heart@"}';$gateway->registerAddress='127.0.0.1:1236';}privatefunctionstartRegister(){newRegister('text://0.0.0.0:1236');}}
轉載于:https://www.cnblogs.com/MoMeak123/p/10885901.html
總結
以上是生活随笔為你收集整理的laravel框架中引入Workerman的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 7-5.11
- 下一篇: Python---基础---list(列