天天看點

關于workerman與codeigniter結合使用的調用方式workerman想通過TP、CI之類的PHP架構來啟用前言一、如何在CI架構中使提供websocket服務?二、使用步驟二、建立操作控制器總結

workerman想通過TP、CI之類的PHP架構來啟用

提示:PHP CI 架構下內建使用 workerman

文章目錄

  • workerman想通過TP、CI之類的PHP架構來啟用
  • 前言
  • 一、如何在CI架構中使提供websocket服務?
  • 二、使用步驟
    • 1.環境搭建
    • 2.下載下傳workerman
  • 二、建立操作控制器
    • 1.建立Workerman 控制器
    • 2.啟動 Workerman 方法
    • 2.啟動 Workerman
  • 總結

前言

提示:這裡可以添加本文要記錄的大概内容:

例如:随着人工智能的不斷發展,機器學習這門技術也越來越重要,很多人都開啟了學習機器學習,本文就介紹了機器學習的基礎内容。

提示:以下是本篇文章正文内容,下面案例可供參考

一、如何在CI架構中使提供websocket服務?

示例:與ThinkPHP,CI等架構結合

使用GatewayWorker時開發者最關心的是如何與現有mvc架構(ThinkPHP Yii laravel等)

總體原則:

現有mvc架構項目與GatewayWorker獨立部署互不幹擾

二、使用步驟

1.環境搭建

請參考 http://doc3.workerman.net/315115

2.下載下傳workerman

WorkerMan實際上就是一個PHP代碼包,如果你的PHP環境已經裝好,隻需要把WorkerMan源代碼或者demo下載下傳下來即可運作。

Composer安裝:

composer require workerman/workerman
           

Git安裝:

git clone https://github.com/walkor/Workerman
           

二、建立操作控制器

1.建立Workerman 控制器

切換到項目目錄下 controller 目錄

// Workerman  controller
<?php
if ( ! defined('BASEPATH')) exit('No direct script access allowed');
require_once '../vender/workerman/workerman/Autoloader.php';
use Workerman\Worker;
use Workerman\Lib\Timer;
use \Workerman\Connection\AsyncTcpConnection;
class Workerman extends CI_Controller
{
     public function __construct()
     {
        parent::__construct();
     }
     public function server(){
          $task_worker = new Worker('Text://0.0.0.0:3061');
          // task程序數可以根據需要多開一些
          $task_worker->count = 20;
          $task_worker->name = '任務名稱';
          //隻有php7才支援task->reusePort,可以讓每個task程序均衡的接收任務
          //$task->reusePort = true;
          $task_worker->onMessage = function($connection, $task_data)
          {
               // 假設發來的是json資料
               $task_data = json_decode($task_data, true);
               echo "\r\n";

      		  //業務了邏輯。。。。。。。。。可調用CI 程式
            
               // 發送結果
               // $connection->send(json_encode($task_result));
          };
          Worker::runAll();
     	}
     }
?>
           

2.啟動 Workerman 方法

啟動

以debug(調試)方式啟動

php start.php start

以daemon(守護程序)方式啟動

php start.php start -d

停止

php start.php stop

重新開機

php start.php restart

平滑重新開機

php start.php reload

檢視狀态

php start.php status

但是引用了架構需要修改預設的路由,将第一路由作為控制器和方法調用

修改檔案 Workerman/Workerman/worker.php

runAll 方法

    public static function runAll()
    {
        static::checkSapiEnv();
        static::init();
        static::lock();
        static::parseCommand();
        static::daemonize();
        static::initWorkers();
        static::installSignal();
        static::saveMasterPid();
        static::unlock();
        static::displayUI();
        static::forkWorkers();
        static::resetStd();
        static::monitorWorkers();
    }
	
	//修改删除預設擷取的第一路由
	//在頭部增加
        global $argv;
        unset($argv[1]);
        $argv = array_values($argv);
	
           

2.啟動 Workerman

切換到項目根目錄

運作

關于workerman與codeigniter結合使用的調用方式workerman想通過TP、CI之類的PHP架構來啟用前言一、如何在CI架構中使提供websocket服務?二、使用步驟二、建立操作控制器總結

啟動成功

守護程序方式啟動

關于workerman與codeigniter結合使用的調用方式workerman想通過TP、CI之類的PHP架構來啟用前言一、如何在CI架構中使提供websocket服務?二、使用步驟二、建立操作控制器總結

總結

本文介紹了在第三方架構下如何內建使用workerman的啟動方式,應該怎麼加參數才可以實作類似直接啟動workerman的效果,如何帶入架構路由啟動服務,并可以通過workerman 方式調用架構進行業務處理。