HEX
Server: Apache/2.4.59 (Debian)
System: Linux keymana 4.19.0-21-cloud-amd64 #1 SMP Debian 4.19.249-2 (2022-06-30) x86_64
User: lijunjie (1003)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //home/lijunjie/swoole-cli/swoole-src-4.8.13/examples/coroutine/test.php
<?php
function BatchExecMethodByCo($channel,$funcs)
{
    foreach ($funcs as $key => $func) {
        go(function()use($channel,$func,$key){
            $res = $func();
            $channel->push([$key=>$res]);
        });
    }    
}
function test($value='')
{
    \Co::sleep(1);
    return "test\n";
}
function test2($value='')
{
    \Co::sleep(1);
    return "test2 ".rand(1,10)."\n";
}
go(function(){
    $c = 2;
    $channel = new \Swoole\Coroutine\Channel(2);
    $task = ["test","test2","test"];
    BatchExecMethodByCo($channel,$task);
    $list = [];
    $num = count($task);
    for ($i=0;$i<$num;$i++)
    {
        $list[$i] = $channel->pop();
    }
    var_dump($list);
});