簡體   English   中英

如何加快CURL任務?

[英]How can I speed up CURL tasks?

我正在使用CURL從用戶帳戶中獲取一些數據。 首先,它登錄然后重定向到數據所在的另一個URL。

我的統計數據顯示,平均需要14秒才能獲取超過5頁的數據。 我想加快速度,我的問題是:

是否有可能看到每個步驟需要多少? 你知道我怎么能加速/增強CURL?

謝謝

要使任務“感覺”更快,請不要將其作為Web請求的一部分運行,而是在后台作為定期任務(cron作業)運行它。

將響應緩存在磁盤或數據庫中。

你可以使用Pete Warden的parallelCurl。 源代碼可以在http://github.com/petewarden/ParallelCurl找到 該模塊允許您在PHP中並行運行多個CURL URL提取

您無法更快地從服務器檢索頁面。

您可以縮小頁面,以便更快地下載。 您可以增強服務器上的處理能力或服務器與頁面所在服務器之間的連接。

如果您正在使用服務,那么數據的格式是什么? 如果它是XML,也許它太冗長了,這會導致很多額外的千字節,例如。

用這個選擇加快卷曲

curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );

問候

將任務拆分為3個文件。

  1. 用於檢索頁面列表的文件和作為主腳本(放在crontab上)(main.php)
  2. 用於解析實際頁面。 (parse.php)
  3. 一些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");
?>

這是你的第三個文件:

#!/bin/bash  

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

請注意,在第3個腳本(shell腳本)上,我使用&(&符號)。 這將告訴shell將該特定進程放入后台進程。

在第二個腳本上,您可以使用以下內容:

<?php

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

使用上面的步驟,您可以通過一次提取多個頁面來加快速度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM