如何加快CURL任务?

时间:2010-04-12 06:40:05

标签: php curl

我正在使用CURL从用户帐户中获取一些数据。 首先,它登录然后重定向到数据所在的另一个URL。

我的统计数据显示,平均需要14秒才能获取超过5页的数据。 我想加快速度,我的问题是:

是否可以看到每个步骤需要多少钱? 你知道我怎样才能加速/提升CURL?

由于

5 个答案:

答案 0 :(得分:3)

为了让“感觉”更快,请不要将其作为Web请求的一部分运行,而是在后台作为定期任务(cron作业)运行。

在磁盘或数据库中缓存响应。

答案 1 :(得分:3)

你可以使用Pete Warden的parallelCurl。来源可在此处http://github.com/petewarden/ParallelCurl获取。该模块允许您在PHP中并行运行多个CURL URL提取

答案 2 :(得分:1)

您无法更快地完成从服务器检索页面的过程。

您可以缩小页面,以便下载更快。您可以增强服务器上的处理能力或服务器与页面所在服务器之间的连接。

如果您正在使用某项服务,那么该数据的格式是什么?如果它是XML,可能它太冗长了,这会导致很多额外的千字节,例如。

答案 3 :(得分:1)

使用此操作加快卷曲

curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );

此致

答案 4 :(得分:0)

将任务拆分为3个文件。

  1. 用于检索页面列表的文件和作为主脚本(放在crontab上)(main.php)
  2. 用于解析实际页面。 (parse.php)
  3. 一些shell脚本来处理你的第二个脚本。
  4. 然后,在您的第一个文件中,执行以下操作:

    <?php
    $pagelist = get_page_list();//this will retrieve page list using CURL and save each page to some, let's say pagelist.txt and return this absolute path.
    
    exec("/path/to/php /your/3rdscript.sh < $pagelist");
    ?>
    

    这是你的第三个文件:

    #!/bin/bash  
    
    while read line
    do
        /path/to/php /path/to/your/2ndscript.php -f $line &
    done
    

    请注意,在第3个脚本(shell脚本)上,我使用&amp; (符号)。这将告诉shell将该特定进程放入后台进程。

    在您的第二个脚本上,您可以使用以下内容:

    <?php
    
    $pageurl = $argv[2];
    //do your curl process to fetch page $pageurl here
    

    使用上面的步骤,您可以通过一次抓取多个页面来加快速度。