[ u_m @ 08.09.2004. 22:38 ] @
| imam ovo:
Code:
otvoriurl ( $url, $text ) {
$file = fopen("$url", "r");
while (!feof ($file))
{
$line = fgets ($file, 1024);
if (substr_count($line, "$text") > 0)
{
print "<p>$text</p>";
}
}
fclose($file);
}
problem je sto je ovo uzasno sporo i ubija mi server ( na stranici se tri puta poziva ova func, a stranica se izvrsava otprilike 10 puta u sec.) kesiranje ne pomaze jer sadrzaj je svaki put drugaciji (neka vrsta simulacije brouser-a)
ima li neko ideju kako da ovo ubrzam?
sustina je: otvoriti stranu i pronaci zadani text na remote serveru (pored svega i ping je uzasan) |
[ Gojko Vujovic @ 08.09.2004. 23:15 ] @
Možda: <? readfile($_GET[url]); ?>
[ Nemanja Dubravac @ 08.09.2004. 23:26 ] @
mozda lupam, ali da li
CURL pomaze?
[ u_m @ 08.09.2004. 23:35 ] @
@Gojko
ne treba mi citav sadrzaj strane, vec samo informacija da li se $text nalazi na toj strani (pretrazivac)
@Nemanja
ce da vidimo
[ boccio @ 08.09.2004. 23:50 ] @
mmmm....mozda i ja lupam :)) ali mislim da cURL nije nesto posebno brzi...
[ boccio @ 09.09.2004. 00:02 ] @
ako ne lupam (ova podstapalica postade mnogo popularna :)) usko grlo mu je sto mora da ceka za svaki request da li ce da prodje, ili na time-out...sto zaista ubija...
Citat:
u_m:
ne treba mi citav sadrzaj strane, vec samo informacija da li se $text nalazi na toj strani (pretrazivac)
to nema veze...ti cekas na response servera, a da li ce ti vratiti samo header ili ceo HTML to je prilicno nebitno...
mozda da se uradi neki threading, pa da se fopen() poziva iz niti?
[ -zombie- @ 09.09.2004. 04:43 ] @
php nema tredove.
nisam baš razumeo postavku, ali ako vam odgovara, možete da postavite da fread() funkcija bude non-blocking.
ili ako ne odgovara, onda čista C funkcija file_get_contents().
brže od toga ne može što se tiče CPU loada, a što se tiče mrežnog, možete da umesto http/1.0 koristite stalnu http/1.1 vezu ka serveru, i preko iste izvršite više zahteva. pa još ako server podržava pakovanje (gzip)..
u svakom slučaju, povećajte veličinu fread() buffera sa 1024 na bar 8k, a može slobodno i više (50k, 200k.. koliki već odgovor očekujete).
i btw, šta tačno znači "ubija server"? optereti cpu ili mrežu? a 30+ http zahteva u sekundi nije malo ni za jedno ni za drugo..
[ u_m @ 09.09.2004. 11:38 ] @
Citat:
-zombie-:
i btw, šta tačno znači "ubija server"? optereti cpu ili mrežu? a 30+ http zahteva u sekundi nije malo ni za jedno ni za drugo..
evo graf "cpu usage":
dok protok na mreznoj je oko 30k/b dnevno (odlazni saobracaj)
ocigledno da opterecuje jedno i drugo
testiram ostale ideje...
[ popeye @ 09.09.2004. 23:27 ] @
Probaj preg_match_all funkciju umesto substr_count. Trebalo bi da bude brže.
[ mbabuskov @ 17.09.2004. 22:53 ] @
Mozda da zaobidjes PHP jer te to najvise koci.
Napisi jednostavan C program koji to trazi i vraca nasao/ne pa ga pozivaj iz php-a sa system() ili exec() ili popen()
Trebalo bi da radi mnogo brze.
[ u_m @ 14.11.2004. 00:15 ] @
kako da iz c-a otvorim stranu na netu? i da je pretrazim? lakse nego iz php-a?
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.