Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Optymalizacja wolnego działania skryptu
Forum PHP.pl > Forum > PHP
gg1985
Witam,

Zadaniem mojego skryptu jest około 10 krotnie wywołanie innych plików, które są na tym samym serwerze. Teraz mam file_get_contents wewnątrz foreacha. Wolno to działa. Może da się jakoś inaczej?

Pozdrawiam
elektrrrus
Spróbój DirectoryIterator.
gg1985
Nie do końca mi o to chodziło. Przez file_get_contents pobieram sobie plik, z tego samego serwera, który zwraca mi tablicę wartości, tzn. w tym pliku jest echo. Dlatego same wykonanie to nie wszystko, potrzebuje jeszcze pobrać to, co wypluwa ten plik.
Crozin
To może pokaż co tam teraz masz.
gg1985
Chyba tak będzie najlepiej:

Kod
foreach($phrases as $val){
    $pos = file_get_contents("http://adres.pl/getPosition.php?phrase=".urlencode($val)."&site=$address");
    $pos = explode ('|', $pos);
    $row = "<tr><td>$val</td><td align=\"center\">$pos[0]</td><td align=\"center\">$pos[1]</td></tr>";
    $message .= $row;
    echo $row;
    $sum += $pos[1];
}
nospor
Cytat
Zadaniem mojego skryptu jest około 10 krotnie wywołanie innych plików
Przecież w kodzie co podałeś wywołujesz ciągle ten sam jeden plik a nie 10 różnych :/

Totalnie bezsensu. Zapisz to co robi ten plik w funkcji i poprostu odpalaj funkcje a nie jakieś dzikie kombinacje robisz.
gg1985
Tak, wywołuje 10 razy ten sam plik z różnymi parametrami. W pliku getPosition.php mam:

Kod
curl_setopt($rC, CURLOPT_HEADER, 0);
curl_setopt($rC, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($rC, CURLOPT_VERBOSE, 1);
curl_setopt($rC, CURLOPT_REFERER, 'www.google.pl');
curl_setopt($rC, CURLOPT_URL, sprintf($sURLTpl, urlencode($sQ)));
$sData = curl_exec($rC);
curl_close($rC);


Czy wrzucenie tego do funkcji w miejsce file_get_contents na pewno poprawi szybkość?
nospor
Cytat
Tak, wywołuje 10 razy ten sam plik z różnymi parametrami.
To już wiem, przecież sam ci to napisałem, bo z pierwszego posta można było wywnioskować, że to ty tego nie wiesz.

Cytat
Czy wrzucenie tego do funkcji w miejsce file_get_contents na pewno poprawi szybkość?

1) zamiast file_get_contents() będziesz wywoływał funkcje, którą masz zdefiniować gdzieś wcześniej - tak, to przyspieszy ten kod, bo nie będziesz już bez sensu ładował przez http tego pliku.
2) Czy przyspieszy znacznie? Może się okazać, że nie koniecznie, gdyż ty w tym pliku latasz do google, i może się okazać, że dośc spore opóźnienia masz właśnie tam.
3) Mógłbyś cachować u siebie wyniki. Przecież pozycja podanych adresów nie zmienia się zbyt często wink.gif
gg1985
Dzięki smile.gif Poczytam jeszcze o cURL, bo tam chyba jest jakaś opcja, że jakby google nie odpowiadał długo, to można ustawić, żeby po określonym czasie zrywał połączenie.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.