gpt4 book ai didi

php - 多个请求的网关超时 504。 Apache

转载 作者:行者123 更新时间:2023-12-02 00:57:47 28 4
gpt4 key购买 nike

我在本地有一个 XML 文件。它包含来自市场的数据。大致是这样的:

<offer id="2113">
<picture>https://anotherserver.com/image1.jpg</picture>
<picture>https://anotherserver.com/image2.jpg</picture>
</offer>
<offer id="2117">
<picture>https://anotherserver.com/image3.jpg</picture>
<picture>https://anotherserver.com/image4.jpg</picture>
</offer>
...

我想要的是将这些图像保存在 <picture> 中本地节点。

有大约 9,000 个报价和大约 14,000 张图像。

当我遍历它们时,我看到图像是从另一台服务器复制的,但在某些时候它给出了 504 Gateway Timeout .

问题是有时在 2,000 张图像后或多或少会出现错误。

我尝试仅从该服务器获取一张图像 12,000 次(即仅 https://anotherserver.com/image3.jpg ),但它仍然给出相同的错误。

正如我所读到的,另一台服务器在一定数量后阻止了我的请求。

我尝试使用 PHP sleep(20)在每第 100 张图片之后,它仍然给了我同样的错误(sleep(180) - same)。当我尝试使用本地镜像但使用完整路径时,它没有给出任何错误。尝试了第二台服务器(非本地)发生了同样的事情。

我使用 PHP copy()从该服务器移动图像的功能。我刚用过 file_get_contents()出于测试目的,但得到了同样的错误。

我有

set_time_limit(300000);
ini_set('default_socket_timeout', 300000);

也是,但运气不好。

有什么方法可以在不分块请求的情况下做到这一点吗?

此错误是否发生在某张图片上?如果可以的话,捕获此错误或仅跟踪响应延迟以在一段时间后发送另一个请求会很棒吗?

是否有任何以秒为单位的恒定时间我必须等待才能让这些请求滚动?

如果可能,请给我非 curl 的答案。

UPDATE

Curl 和 exec(wget) 也不能正常工作。他们都犯了同样的错误。

可以调整远程服务器使其不阻止我吗? (如果是的话)。

附注如果我这样做:echo "<img src = 'https://anotherserver.com/image1.jpg'" />在所有 12,000 张图像的循环中,它们显示得很好。

最佳答案

由于您访问的是您无法控制的服务器上的内容,因此只有服务器管理员知道适当的阻止规则。

但是您有几个选择,如下所示:

  • 批量运行 1000 次左右,然后睡几个小时。
  • 在请求信息的计算机之间拆分请求。
  • 也许甚至像每 1000 张左右图像更改请求用户代理信息这样简单的事情就足以绕过阻止机制。
  • 或以上所有的某种组合。

关于php - 多个请求的网关超时 504。 Apache ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53096875/

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