国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

用AsyncTcpConnection向服務(wù)器發(fā)送指令,獲取服務(wù)器返回的數(shù)據(jù)。

workerofmine

在cmd下執(zhí)行 php test.php,可以正常收發(fā)數(shù)據(jù)。
但指令是由用戶發(fā)送,所以要用PHP寫個接口獲取用戶的指令,然后運行workerman返回指令對應(yīng)的數(shù)據(jù)。
想請教下接口獲取用戶發(fā)來的指令后,怎么運行workerman?

5159 10 0
10個回答

walkor 打賞

workerman是命令行啟動的,不能通過網(wǎng)頁啟動。

你可以監(jiān)聽一個http協(xié)議的端口,$this->worker->onMessage 里接收到客戶端http請求后new AsncTcpConnection去請求遠程數(shù)據(jù)。然后命令行啟動這個http服務(wù)。

  • 暫無評論
workerofmine

監(jiān)聽一個http協(xié)議的端口,是先new一個woker,然后在這個worker的onMessage 中再new AsncTcpConnection,這個我之前試過了,報錯說window下不支持同時實例化多個worker,是這樣嗎?

  • 暫無評論
walkor 打賞

你__construct源碼里

$this->worker = new Worker();
改成
$this->worker = new Worker('http://0.0.0.0:8585');
$this->worker->onMessage = array($this, 'onMessage');

然后給Bases寫一個onMessage方法。

  • 暫無評論
workerofmine

是這個意思嗎,onMessage里面寫什么內(nèi)容,跟start方法怎么關(guān)聯(lián)?

 public function __construct($url,$base,$orderArr = []){
        $this -> url        = $url;
        $this -> base       = $base;
        $this -> orderArr   = $orderArr;

        $this->worker       = new Worker('http://0.0.0.0:8585');
        $this->worker->onMessage = array($this, 'onMessage');
        $this -> worker -> name  = 'normal';

        $this -> start();

    }

    public function onMessage(){
        //這里面寫什么內(nèi)容?
    }

    public function start(){
        $this -> worker -> onWorkerStart = function(){
            $con              = new AsyncTcpConnection($this -> url);
            //其他代碼
        } 
  }
  • 暫無評論
walkor 打賞

onMessage的內(nèi)容就是start的內(nèi)容。start方法可以去掉了

  • 暫無評論
workerofmine

onMessage 不需要參數(shù)吧,我現(xiàn)在直接實例化傳參,然后命令行運行test.php,一點反應(yīng)都沒有。

  • 暫無評論
walkor 打賞

onMessage用法去看手冊吧。。。

  • 暫無評論
workerofmine

突然又感覺懵了,我是這樣理解的,您給看看理解得對不對。
要想實現(xiàn)我說的功能,就得在onMessage里面使用AsyncTcpConnection才行。
但onMessage的作用是當Workerman收到數(shù)據(jù)時才觸發(fā)。
所以是不是需要再寫一個onConnect,用來接收用戶發(fā)送的指令發(fā)給服務(wù)器。
這樣在AsyncTcpConnection的onConnect中就不需要發(fā)送指令到服務(wù)器,只需在onMessage里面獲取服務(wù)器返回的數(shù)據(jù),然后進行數(shù)據(jù)庫操作就行了。
是這個意思嗎?

或者說不需要再寫onConnect,還是在AsyncTcpConnection的onConnect中向服務(wù)器發(fā)指令,在onMessage中獲取返回的數(shù)據(jù)?

  • 暫無評論
workerofmine

如果不需要再寫onConnect,還是在AsyncTcpConnection的onConnect中向服務(wù)器發(fā)指令,在onMessage中獲取返回的數(shù)據(jù),這樣寫對嗎?


    public function __construct($url,$base,$orderArr = []){
        $this -> url = $url;
        $this -> base = $base;
        $this -> orderArr = $orderArr;

        $this -> worker = new Worker('http://0.0.0.0:8585');
        $this -> worker -> onMessage = array($this,'onMessage');
        $this -> worker -> name = 'normal';
        $this-> onMessage();   //是這樣觸發(fā)onMessage方法?
    }

    public function onMessage(){

        $this -> worker -> onMessage = function(){     //是onMessage還是onWorkerStart
            $con = new AsyncTcpConnection($this -> url);
            $con -> onConnect = function($con){
                //拼接、發(fā)送指令
            };
            $con -> onMessage = function($con,$returnDatas){
                //獲取服務(wù)器返回的數(shù)據(jù),進行數(shù)據(jù)庫操作
            };
        };
        Worker ::runAll();
 }
  • 暫無評論
workerofmine

我按照上面的方法試了,還是和之前接口返回的一樣,請求超時,是哪沒理解寫錯了嗎,我總感覺快寫出來了,麻煩您再指點一下吧。

  • 暫無評論
年代過于久遠,無法發(fā)表回答
??