php swooleマルチプロセス/マルチスレッド例
1508 ワード
swooleのマルチスレッドは実はマルチプロセスで、プロセスの作成が多すぎて切替のオーバーヘッドが大きいので、pthreadsを使うことができればpthreadsを使うことをお勧めします.php 7 ntsバージョンを使っているのでpthreadsは使えません.
swooleの例は次のとおりです.
swooleの例は次のとおりです.
useQueue(0, 2);
$pid = $process->start();
//
$process->write('index:'.$i);
$process->push(' ');
//
$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.'==='.$worker->pid.'==='.$recv;
$worker->exit(0);
}
/**
* /
*/
while(1){
$ret = swoole_process::wait();
if ($ret){// $ret code ,
$pid = $ret['pid'];
echo PHP_EOL."Worker Exit, PID=" . $pid . PHP_EOL;
}else{
break;
}
}
/**
* doTask
* @return [type] [description]
*/
function doTask()
{
sleep(2);
return true;
}