我有一堆laravel工作,他们连接到外部API,获取一些数据并处理数据.

但是每一个jobs都会创建一个新的HttpClient(Guzzle)和一个到API的新连接,这使得API非常慢.

是否有一种解决方案可以将一个HttpClient(带keep alive)用于所有作业(job)?

顺致敬意,

推荐答案

这是可能实现的,因为队列工作者是一个长期运行的进程.

只要您对队列工作者的设置没有导致其提前退出(例如,较低的最大作业(job)计数或较低的最大时间),就应该可以.

您需要使用singleton模式来重用guzzle客户端.然后你可以在你的工作中重复使用同一个客户端.

Php相关问答推荐

如何在搜索域名时重定向到登陆页?

使用箭头函数语法时,在回调范围内无法访问变量变量(警告:未定义的变量)

致命错误:未捕获错误:Google\Auth\HttpHandler\HttpHandlerFactory::build()

PHP从响应应用程序json获取文件代码和URL

如何在WooCommerce产品子类别中显示特定内容

SendGrid响应PHP

如何使用MS Graph PHP SDK V2下载文件

如何在微软图形API中使用用户S访问令牌或基于租户ID的访问令牌?

Select 本地提货时隐藏WooCommerce显示的发货成本

使用 secure 和 httponly 选项删除 php 中的 cookie 值得吗?

PHP 解析 XML 以获取多个深度的所有字符串值

在特征中使用类的属性

在 PHP 8.2 中使用 PHP Spreadsheet 和 CodeIgniter 3 导出 Excel 时出错

根据购买产品的自定义字段替换WooCommerce添加到购物车按钮

PHP:如何将多列sql查询结果转换成数组

如何通过工厂为点列制作一个假坐标?

如何从 PHP 中的 .txt 文件中列出今天生日的人的姓名?

Laravel:ArgumentCountError: 函数 App\Mail 的参数太少

使用 GROUP_CONCAT 规范化/转置来自查询的数据

PHP 从 API 获取随机项目