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 协议》,转载必须注明作者和本文链接
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 29

laravel12有希望上?

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

这个是根据什么原理?

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

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

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

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

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

看起来有点像协程的样子

9个月前 评论

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

9个月前 评论

令人兴奋

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

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

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

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

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

原来如此,可以的

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

感觉是这个 parallel

8个月前 评论

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

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

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

7个月前 评论

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