Heim  >  Artikel  >  PHP-Framework  >  Kann Swoole Multithreading sein?

Kann Swoole Multithreading sein?

(*-*)浩
(*-*)浩Original
2019-12-06 13:13:064566Durchsuche

Kann Swoole Multithreading sein?

Swooles Multithreading besteht eigentlich aus mehreren Prozessen und das Wechseln ist teuer. Wenn Sie pthreads verwenden können, wird empfohlen, pthreads zu verwenden.

Das Swoole-Beispiel sieht wie folgt aus: (Empfohlenes Lernen: Swoole-Video-Tutorial)

<?php
/**
 * 创建多进程
 */
$worker_num         = 6;        // 默认进程数
$workers             = [];        // 进程保存
$redirect_stdout    = false;    // 重定向输出  ; 这个参数用途等会我们看效果
for($i = 0; $i < $worker_num; $i++){
    $process = new swoole_process(&#39;callback_function&#39;, $redirect_stdout);
 
    // 启用消息队列 int $msgkey = 0, int $mode = 2
    $process->useQueue(0, 2);
    $pid = $process->start();
 
    // 管道写入内容
    $process->write(&#39;index:&#39;.$i);
 
    $process->push(&#39;进程的消息队列内容&#39;);
    // 将每一个进程的句柄存起来
    $workers[$pid] = $process;
}
 
 
/**
 * 子进程回调
 * @param  swoole_process $worker [description]
 * @return [type]                 [description]
 */
function callback_function(swoole_process $worker)
{
    $recv = $worker->pop();
    echo "子输出主内容: {$recv}".PHP_EOL;
    //get guandao content
    $recv = $worker->read();
    $result = doTask();
    
    echo PHP_EOL.$result.&#39;===&#39;.$worker->pid.&#39;===&#39;.$recv;
 
    $worker->exit(0);
}
 
 
/**
 * 监控/回收子进程
 */
while(1){
    $ret = swoole_process::wait();
    if ($ret){// $ret 是个数组 code是进程退出状态码,
        $pid = $ret[&#39;pid&#39;];
        echo PHP_EOL."Worker Exit, PID=" . $pid . PHP_EOL;
    }else{
        break;
    }
}
 
 
/**
 * doTask
 * @return [type] [description]
 */
function doTask()
{
    sleep(2);
    return true;
}

Das obige ist der detaillierte Inhalt vonKann Swoole Multithreading sein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn