gpt4 book ai didi

PHP 多 curl 或多线程

转载 作者:搜寻专家 更新时间:2023-10-31 21:16:22 26 4
gpt4 key购买 nike

我正在构建一个执行以下操作的 cron 作业:
1.从数据库中获取记录
2. 对于每条记录,向 API 发出 curl 请求。 (有些请求很快,有些正在上传大图片或视频)。
3. 如果请求不成功,创建一个参数略有不同的新请求(仍然基于记录)并再次发送。这可能会发生多次。
4. 在成功请求时执行一些数据库选择/插入(基于导致发送此请求的原始记录)。

发送请求应该并行进行,因为有些需要几分钟(大量上传),有些则非常快。

什么最适合做这个——有一个主脚本从数据库中获取记录并为每条记录创建一个进程来处理调用 API 和解析响应?或者使用 curl_multi 从同一个脚本同时发送多个请求并在返回时解析每个请求?

如果使用多个进程,最好的方法是什么 - PCNTRL、popen 等?
如果使用 curl_multi 我怎么知道哪个数据库记录对应于哪个返回请求?

编辑:如果使用 curl multi,我可能会使用这种技术:http://www.onlineaspect.com/2009/01/26/how-to-use-curl_multi-without-blocking/
这样它就不会在我开始处理响应之前等待所有请求完成。

谢谢!

最佳答案

在处理大型数据集时,我遇到了类似的问题。

对我来说最简单的答案是制作 4 个单独的脚本,每个脚本都是为了获取所涉及的数据库列的特定的四分之一,在我的情况下进行处理或在您的情况下案例 curl 请求。这将防止对其中一个进程的大请求锁定其他进程。

相比之下,使用 curl_multi 的单个脚本仍然会锁定大型请求,它只会让您一次排队多个请求。

最理想的情况是,我会用一种原生支持多线程的语言来编写此代码,这样您就可以同时进行一些事情,而无需诉诸 hack,但可以理解,这并不总是一种选择。

关于PHP 多 curl 或多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7844648/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com