欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  神坛PHP

使用spatie async库来写异步的PHP代码

程序员文章站 2022-02-02 20:27:37
...

composer require spatie/async


同步代码

foreach (range(1, 5) as $i) {

    $output = $i * 2;

    echo $output . "\n";

}


使用异步代码

include 'vendor/autoload.php';

use Spatie\Async\Pool;

$pool = Pool::create();

foreach (range(1, 20) as $i) {

    $pool[] = async(function () use ($i) {

        $output = $i * 2;

        return $output;

    })->then(function (int $output) {

        echo $output . "\n";

    });

}

await($pool);




$pool

    ->add(function () {

        // 要在并行进程中执行的任务

    })

    ->then(function ($output) {

        // 如果成功,进程或者你传递到队列的回调函数会返回`$output`。

    })

    ->catch(function ($exception) {

        // 当进程内抛出异常时,它会被捕获并传递到这里。

    })

    ->timeout(function () {

        // 哦,不! 一个过程花了太长时间才完成。 让我们做点什么吧

    })

;


相关标签: async