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 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 29

laravel12有希望上?

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

这个是根据什么原理?

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

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

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

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

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

看起来有点像协程的样子

8个月前 评论

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

8个月前 评论

令人兴奋

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

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

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

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

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

原来如此,可以的

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

感觉是这个 parallel

8个月前 评论

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

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

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

7个月前 评论

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