You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel/Octane如何为concurrently方法设置执行超时?

Octane::concurrently 超时设置方案

原生 Octane::concurrently 没有提供直接的全局超时配置参数,你可以根据需求选择以下两种方案实现超时控制:


方案1:给单个查询加细粒度超时控制

Eloquent 查询本身支持 timeout() 方法,单位为秒,你可以直接给每个闭包内的查询单独设置超时,适合需要精准控制每个操作最大耗时的场景:

Octane::concurrently([
    fn () => User::timeout(3)->get(), // 单查询最大执行3秒
    fn () => Server::timeout(5)->get(), // 单查询最大执行5秒
    fn () => Model::timeout(4)->get(),
    //...
]);

该方案兼容Swoole、RoadRunner两种Octane驱动,单个查询超时不会影响其他并发任务的执行,你可以自行捕获查询超时异常做后续处理。


方案2:给整批并发任务加全局总超时

如果你使用的是Swoole驱动的Octane,可以直接调用底层Swoole的协程批量执行方法,它原生支持第三个参数作为整批任务的总超时时间(单位:秒):

$tasks = [
    fn () => User::all(),
    fn () => Server::all(),
    fn () => Model::all(),
    //...
];
// 整批任务总超时设置为5秒,超时后未完成的任务会被强制终止
$results = Swoole\Coroutine\batch($tasks, count($tasks), 5);

该方案只适用于Swoole驱动的Octane,总超时触发后所有未完成的任务都会被中止,适合需要严格控制整批操作总耗时的场景。


内容的提问来源于stack exchange,提问作者Mwthreex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 01:15:03