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

如何在workerman和gateway中使用swoole協(xié)程?

wenken

https://wenda.workerman.net/question/3128 我看了這個(gè)問題,但是大大只給出了如何開啟swoole事件驅(qū)動(dòng),如何在workerman中使用缺沒給出實(shí)例。
不知道swoole那些類或函數(shù)能夠使用
難道是直接在workerman中像這樣寫代碼就行嗎?

function send($phone, $message){
    go(function () use($phone, $message){
        $sms = new Sms();
        $sms->send($phone, $message);
    });
    return true;
}

如何是這么用的話,是必須開啟swoole事件驅(qū)動(dòng)才能用,還是說不需要開啟就可以這么使用?
?
我剛接觸這方面的知識(shí),還有很多地方不明白,麻煩大大指點(diǎn)下。。。不勝感激!

10401 5 8
5個(gè)回答

walkor 打賞

Worker::runAll(); 運(yùn)行前設(shè)置
Worker::$eventLoopClass = Workerman\Events\Swoole:class
?開swoole事件驅(qū)動(dòng)后就可以用swoole的類或者函數(shù)了

  • wenken 2018-12-20

    謝謝大大,按照你的方式測試通過了,感謝!

wenken

貼上代碼,幫助其他phper
服務(wù)端:

<?php

use Workerman\Worker;

require_once __DIR__ . '/../vendor/autoload.php';

$http_worker = new Worker("tcp://0.0.0.0:2345");

// 啟動(dòng)4個(gè)進(jìn)程對外提供服務(wù)
$http_worker->count = 4;

$http_worker->onMessage = function ($connection, $data) {
    for ($i = 0; $i < 10; $i++) {
        go(function () use ($connection, $i) {
            Co::sleep(1);
            $connection->send(microtime(true) . ": hello" . $i);
        });
    };
    $connection->send($data);
};

// 啟用swoole的事件驅(qū)動(dòng)
Worker::$eventLoopClass = 'Workerman\Events\Swoole';

Worker::runAll();

客戶端:

<?php

use \Workerman\Worker;
use \Workerman\Connection\AsyncTcpConnection;
require_once __DIR__ . '/../vendor/autoload.php';

$task = new Worker();
$task->onWorkerStart = function($task)
{
    $connection_to_baidu = new AsyncTcpConnection('tcp://127.0.0.1:2345');
    $connection_to_baidu->onConnect = function($connection_to_baidu)
    {
        $connection_to_baidu->send("ping");
    };
    $connection_to_baidu->onMessage = function($connection_to_baidu, $http_buffer)
    {
        echo $http_buffer."\n";
    };
    $connection_to_baidu->onClose = function($connection_to_baidu)
    {
        echo "connection closed\n";
    };
    $connection_to_baidu->onError = function($connection_to_baidu, $code, $msg)
    {
        echo "Error code:$code msg:$msg\n";
    };
    $connection_to_baidu->connect();
};

// 運(yùn)行worker
Worker::runAll();
caiqy

mark..........

  • 暫無評(píng)論
varphp

Workerman\Events\Swoole 這個(gè)是怎么來的 不是很了解

  • phpcreeper 2019-08-09

    1、swoole不僅僅是作為一個(gè)異步網(wǎng)絡(luò)通信引擎存在的PHP擴(kuò)展,同時(shí)也是一個(gè)異步事件驅(qū)動(dòng)
    庫。
    2、Workerman\Events\Swoole 是對swoole事件驅(qū)動(dòng)的封調(diào)用裝實(shí)現(xiàn),其源代碼在workerman源碼中就能找到。

  • kenny534 2019-10-10

    Workerman\Events\Swoole.php
    里的 use Swoole\Event; use Swoole\Timer; 這兩個(gè)東東在哪里?

kkiissooo

Worker::$eventLoopClass = 'Workerman\Events\Swoole';

啟用swoole事件驅(qū)動(dòng)后,用php start.php stop停止workerman,會(huì)報(bào)錯(cuò):

Fatal error: Uncaught Swoole\ExitException: swoole exit in /Users/....../GatewayWorker/vendor/workerman/workerman/Worker.php:1808
Stack trace:
#0 /Users/....../GatewayWorker/vendor/workerman/workerman/Worker.php(1120): Workerman\Worker::stopAll()
#1 [internal function]: Workerman\Worker::signalHandler(2, Array)
#2 /Users/....../GatewayWorker/vendor/workerman/workerman/Events/Swoole.php(52): pcntl_signal_dispatch()
#3 {main}
  thrown in /Users/....../GatewayWorker/vendor/workerman/workerman/Worker.php on line 1808

請問下怎么解決呢

年代過于久遠(yuǎn),無法發(fā)表回答
??