gpt4 book ai didi

PHP CURL_Multi 检查已完成句柄的状态、删除、添加、超时

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

所以我正在处理大约 3000 个链接,我正在使用curl_multi 来加速这个过程。我一次使用了 20 个简单的进程,等待所有 20 个完成,再处理 20 个以上类型的方法,但我知道这是低效的,特别是如果这 20 个链接之一需要永远下载的话。因此,我需要知道如何编写一个循环,通过在从该 url 获取内容后立即添加/删除句柄来遍历所有 3000 个链接。

我正在使用其中一些基础知识:

define('RUNATONCE', 20); // Links to process at a time

// My URL holding multi-dimensional array:
// This first dimension is about 1000 and the second dimension is 3
$allurls[0][0];

我需要能够:

1) 检查句柄何时完成,并了解该句柄属于我的多维数组中的哪个 url

2) 检索该句柄的内容,并根据该句柄的内容是否属于 $allurls[0][0],$allurls[0][1] 的一部分来分配一个进程,或者$allurls[0][2](每个过程都有不同的过程)

3) 删除该句柄并从 $allurls 添加另一个 URL,直到处理完所有链接

4) 对任何花费超过一定时间(例如 2 分钟)的 URL 进行手动超时处理(因为 CURLOPT_CONNECTTIMEOUTCURLOPT_TIMEOUT 不起作用正确地在curl_multi环境中(或者至少这是我基于http://curl.haxx.se/mail/curlphp-2008-06/0006.html的经验和理解)),但我还需要在我的$allurls中知道该URL是否超时...

我知道这看起来有点工作,但对于知道这一点的人来说,这不应该是那么多工作...我只是不太知道如何做到这一点的具体细节...谢谢。

最佳答案

我遇到过类似的情况,我需要验证某些 URL,我找到的两个解决方案是首先使用 pcntl 让 PHP fork 一个新进程。如果它已安装或者(这很丑陋,但不幸的是我已经解决了,因为服务器上没有安装 pcntl)使用 AJAX 来请求验证 URL 的 PHP 页面。我将超时设置为 30 秒,所以即使某些事情花费很长时间也没关系。

关于PHP CURL_Multi 检查已完成句柄的状态、删除、添加、超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6990301/

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