Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何加快CURL任务的速度?_Php_Curl - Fatal编程技术网

Php 如何加快CURL任务的速度?

Php 如何加快CURL任务的速度?,php,curl,Php,Curl,我正在使用CURL从用户帐户获取一些数据。 它首先登录,然后重定向到数据所在的另一个URL 我的统计数据显示,平均需要14秒才能获取一些分布在5页上的数据。 我想加快速度,我的问题是: 是否有可能看到每一步需要多少? 你知道如何加快/增强卷曲度吗 感谢为了让任务“感觉”更快,请不要将其作为web请求的一部分运行,而是将其作为定期任务(cron作业)在后台运行 将响应缓存在磁盘或数据库中。从服务器检索页面的过程再快不过了 您可以将页面缩小,以便下载速度更快。您可以增强服务器上的处理能力,或者增强服

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

我的统计数据显示,平均需要14秒才能获取一些分布在5页上的数据。 我想加快速度,我的问题是:

是否有可能看到每一步需要多少? 你知道如何加快/增强卷曲度吗


感谢

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


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

从服务器检索页面的过程再快不过了

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

如果您使用的是服务,数据的格式是什么?如果是XML,可能太冗长,这会导致大量额外的KB,例如。

将任务拆分为3个文件

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

    <?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");
    ?>
    
    <?php
    
    $pageurl = $argv[2];
    //do your curl process to fetch page $pageurl here
    
    请注意,在第三个脚本(shell脚本)中,我使用了&(符号)。这将告诉shell将该特定进程放入后台进程

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

    <?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");
    ?>
    
    <?php
    
    $pageurl = $argv[2];
    //do your curl process to fetch page $pageurl here
    

    您可以使用Pete Warden的parallelCurl。来源可在这里找到。该模块允许您在PHP中并行运行多个CURL url获取

    curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );
    

    把它当作CRON作业来运行。将文件缓存在磁盘上是什么意思?它是HTML格式的。也许我可以去掉这些图片,直接下载文本?有可能使用卷曲吗?卷曲不下载图片。好的,那么有什么卷曲调整我可以试试吗?有可能找到瓶颈步骤吗?@embedded cURL下载单个URL的内容,就是这样。它建立连接,下载内容并关闭连接;需要完成的最低技术要求。它将花费与通过网络移动数据所需的时间相同的时间。cURL本身的开销可以忽略不计。现在我正在解析从cURL检索到的每个数据。你认为通过使用你的建议,我可以通过显著的因素来提高绩效吗?谢谢,我会看看它是否符合我的需要。你在用这个吗?