Nasıl CURL görevleri hızlandırmak?

5 Cevap php

I'm using CURL to fetch some data from user accounts. First it logs in and then redirect to another URL where the data resides.

My stats showed that it took an average of 14 seconds to fetch some data spread over 5 pages. I would like to speed things up, my questions are:

Is it possible to see how much each step takes? Do you know how could I speed up/enhance CURL?

Teşekkürler

5 Cevap

Pete Warden tarafından parallelCurl kullanabilirsiniz. Kaynak burada mevcuttur http://github.com/petewarden/ParallelCurl. Modülü birden CURL url PHP paralel fetches çalıştırmanızı sağlar

, Daha hızlı 'hissi' bir web isteği parçası olarak çalıştırmak değil, bir periyodik görev (Cron) olarak arka planda çalıştırmak görev yapmak.

Disk veya bir veritabanında yanıtı önbelleğe.

Daha hızlı bir sunucudan bir sayfa alma işlemini yapamazsınız.

Sen sayfaların daha küçük yapabilir, böylece daha hızlı indirebilirsiniz. Sen sunucuları veya sunucu ve sayfaları üzerinde sunucusu arasındaki bağlantı üzerinde işlem gücünü artırma yapabilirsiniz.

Bir hizmet alıcı iseniz, veri formatı ne olduğunu? Bu XML ise, belki de çok ayrıntılı ve bu örneğin, ekstra kilobayt sürü neden oluyor.

3 dosyalara bölünmüş görev.

  1. sayfa listesini almak için ve ana komut (crontab koymak) (main.php) gibi dosya
  2. gerçek sayfa ayrıştırma için. (Parse.php)
  3. senin 2 komut işlemek için biraz kabuk script.

Sonra, 1 dosya, böyle bir şey yapın:

<?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");
?>

Ve burada 3 dosya bulunuyor:

#!/bin/bash  

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

3. betik (kabuk) Lütfen dikkat, ben kullanmak & (Işareti). Bu arka plan işlemi içine belirli bir süreç koymak kabuk anlatacağım.

Senin 2 senaryo üzerinde, böyle bir şey kullanabilirsiniz:

<?php

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

Yukarıdaki adımı kullanarak, bir kerede birkaç sayfayı getiriliyor tarafından hızlandırabilir.

Ben bu tamamen işe edip etmeyeceğimi çok emin değilim rağmen çoklu deneyebilirsiniz.