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 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 29

laravel12有希望上?

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

这个是根据什么原理?

7个月前 评论
JaguarJack (楼主) 7个月前
shuifa 6个月前

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

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

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

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

看起来有点像协程的样子

7个月前 评论

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

7个月前 评论

令人兴奋

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

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

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

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

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

原来如此,可以的

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

感觉是这个 parallel

7个月前 评论

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

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

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

6个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
开发 @ 家里蹲开发公司
文章
75
粉丝
73
喜欢
354
收藏
259
排名:19
访问:27.4 万
私信
所有博文
社区赞助商