1

使用 PHP curl 下载 50 多个 PDF 文件的正确方法是什么?

下面是我正在使用的代码:

$fp = fopen("test.pdf", 'w');        
$ch = curl_init();
            
curl_setopt($ch,CURLOPT_PROXY,"http://test:123");
curl_setopt($ch,CURLOPT_PROXYPORT,123);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 0);
curl_setopt ($ch, CURLOPT_TIMEOUT, 500);
curl_setopt($ch,CURLOPT_URL,"http://download/test.pdf");
curl_setopt($ch, CURLOPT_FILE, $fp);
        
curl_exec($ch);
curl_close($ch);
fclose($fp);

问题是有时,没有正确下载 2-3 个 PDF 文件(大小为 0-1 个字节)。知道为什么它不稳定吗?我必须在上面的代码中包含其他任何内容吗?

4

1 回答 1

0

通常,即使来自浏览器和良好的连接,Web 请求也可能非常狡猾。从远程站点拒绝您的连接到从多个位置同时执行您的 php 文件,这里可能会出现一些问题。看一下:

http://www.php.net/manual/en/function.curl-error.php

尝试在某处打印错误消息以对 curl_exec 进行分析。

如果是连接问题,你可能需要引入重试机制,不确定你的脚本是否有可能从多个位置并行执行,但如果是,你应该看看http://php。 net/manual/en/function.uniqid.php作为一种方法,首先生成一个合理唯一的文件名,尝试下载,如果没有返回错误,则仅将文件移动到预期的目标文件,否则重试最多 X 次。

关于 Curl 的稳定性,我经常使用它,并没有证明它对我来说不稳定,但我并没有拉下二进制数据。我希望一些错误检测和错误消息的输出可以进一步阐明根本原因是什么。

于 2013-02-19T11:29:26.660 回答