Laravel 即将发布一个新的 Facade Concurrency(并发)

根据泰勒的演讲来看,新的门面支持并发任务了:alien:

Route::get('/concurrency', function() {
    Concurrency::run([
        fn() => sleep(1),
        fn() => sleep(1),
        fn() => sleep(1),
        fn() => sleep(1),
        fn() => sleep(1),
        fn() => sleep(1)
    ])

    // 耗费 1s
})

期待发布。

说明下,这个特性不光是并发任务处理,还支持返回值的。

//$values[] = Metrics::get().
//$values[] = Metrics::get()
//$values[] = Metrics::get();
//$values[] = Metrics:.get();
//$values[] = Metrics::get()

$values = Concurrency::run([
    fn()=> Metrics::get(),
    fn()=> Metrics::get(),
    fn()=> Metrics::get(),
    fn()=> Metrics::get()
    fn()=> Metrics::get(),
]);

return view('demo', ['values' => $values]);
本作品采用《CC 协议》,转载必须注明作者和本文链接
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 29

laravel12有希望上?

5个月前 评论
JaguarJack (楼主) 5个月前

这个是根据什么原理?

5个月前 评论
JaguarJack (楼主) 5个月前
shuifa 4个月前

不错,有些地方确实可以并行业务~

5个月前 评论
JaguarJack (楼主) 5个月前
Imuyu (作者) 5个月前

sleep应该是不能并行的, 用了parallel?

5个月前 评论
JaguarJack (楼主) 5个月前

看起来有点像协程的样子

5个月前 评论

期待 、主要是php太拉跨了。看看php9有没有什么新的特性

5个月前 评论

令人兴奋

5个月前 评论
JaguarJack (楼主) 5个月前
xiaopi

等于啥都没说,原理是什么?光并发不行,还得相互能通信

5个月前 评论
JaguarJack (楼主) 5个月前
shuifa 5个月前
xiaopi (作者) 5个月前
JaguarJack (楼主) 5个月前
JaguarJack (楼主) 5个月前
shuifa 5个月前
JaguarJack (楼主) 5个月前
xiaopi

所以我想知道啥原理啊,是多进程还是单进程多协程,不同的场景,到底是适用cpu密集的业务还是IO密集的业务 :joy:

5个月前 评论
JaguarJack (楼主) 5个月前
shuifa 5个月前
xiaopi

原来如此,可以的

5个月前 评论
JaguarJack (楼主) 5个月前

感觉是这个 parallel

5个月前 评论

11 就已经引入进来了吧,原理上还是挺简单粗暴的,

看了一下代码,先序列化闭包,丢给 artisan(artisan invoke-serialized-closure) 执行(序列化后的内容放在了 LARAVEL_INVOKABLE_CLOSURE 环境变量),命令里面执行完成后,直接把结输出到了标准输出。

因为是通过容器进行 call 的,也就是传递的这个闭包还可以使用容器注入参数。

4个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!