七:使用channel多协程运行顺序控制的基本方法
一:使用channel多协程运行顺序控制的基本方法
<?php
use Swoole\Coroutine as co;
function query(array $sqls){
$mysql=new co\MySQL();
$conn=$mysql->connect(['host' => '192.168.1.109', 'user' => 'root', 'password' => 'SwoftTest@1234', 'database' => 'swoft2',]);
foreach($sqls as $sql){
$statement=$mysql->prepare($sql);
$rows=$statement->execute();
foreach ($rows as $row)
{
foreach ($row as $k=>$v)
{
echo $k."=>".$v;
}
}
}
echo PHP_EOL;
}
go(function (){
$chan=new co\Channel(2);
go(function() use($chan){//协程1
query(["select sleep(3)","select * from user where user_id=1"]);
$chan->push(1);
});
go(function()use($chan){//协程2
query(["select * from user where user_id=2"]);
$chan->push(2);
});
for ($i=0;$i<2;$i++)
{
$chan->pop();
}
echo "done".PHP_EOL;//待两个协程执行完毕会执行 此输出函数
});
执行结果:
![]()


浙公网安备 33010602011771号