2011-12-16 90 views
1

我有一个脚本从数据库中提取URL并将它们下载到本地文件(pdf或jpg)。使用PHP/cURL下载远程文件:更强大一点

代码是:

$cp = curl_init($remote_url); 
    $fp = fopen($dest_temp, "w"); 
    @curl_setopt($cp, CURLOPT_FILE, $fp); 
    @curl_setopt($ch, CURLOPT_HEADER, TRUE); 
    curl_exec($cp); 
    curl_close($cp); 
    fclose($fp);  

如果远程文件是存在的,它工作正常。如果远程文件不在那里,它只是炸弹,浏览器永远挂起。

什么是最好的方法来处理这个,我应该先以某种方式ping文件?或者我可以设置上面的选项来处理这个问题。我尝试设置超时,但它没有效果。

这是用我的第一次经历卷曲

+0

你试过了什么超时值?你有没有试过TIMEOUT和CONNECTTIMEOUT?此外,你检查curl_error()或curl_errno()的线索吗?如果RETURNTRANSFER(如果你自己编写内容,会产生什么影响?)或FOLLOWLOCATION(远程请求是否返回位置标题?)。 – landons 2011-12-16 02:19:10

回答

0

我曾经使用wget就像你使用卷曲并与缺乏能力很沮丧知道是怎么回事,因为它本质上呼唤外部程序。

我使用Perl WWW:机械化和下面的链接是一个PHP版本,可能会更强大一点,你能够处理这种情况。

http://www.compasswebpublisher.com/php/www-mechanize-for-php

希望这有助于。