Poslao: 03 Feb 2011 23:34
|
offline
- N1k0l4
- Prijatelj foruma
- Pridružio: 06 Sep 2005
- Poruke: 3800
- Gde živiš: Beograd
|
Da liz nate koliko file_get_contents opterecuje cpu?
Poslali su mi upozorenje da mi sajt previse opterecuje cpu i ram na serveru i da ce me iskljuce ako ne sredim.
Dali su mi da fajl kursna_lista.php najvise trosi, a u njoj imam file_get_contents koji dovlaci podatke sa jedne nase banke i onda parsira sa 2 explode-a.
Da li postoji neko pametnije resenje? Sajt dnevno ima oko 1500 unikatnih poseta i kursna lista je na svakoj stranici...
Da li bi mi pomoglo ako bih recimo to prebacio na neki drugi server da radi a ovamo samo include-ovao taj fajl? Posto pretpostavljam da bi i include radio sporo kad dovlaci sa drugog sajta stranicu?
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
Poslao: 03 Feb 2011 23:54
|
offline
- eevan79
- Građanin
- Pridružio: 21 Apr 2007
- Poruke: 98
|
Jesi li probao preko cURL?
Ili bolja varijanta:
Keširaj parsiran rezultat u html i osvežavaj na par sati.
$Cache = 12; //kesira na 12 sati
if (file_exists("./cache/kursna_lista.html") AND time() - $Cache*60 < filemtime("./cache/kursna_lista.html"))
{
include("./cache/kursna_lista.html"); exit;}
//ili file_get_contents('./cache/kursna_lista.html');
else {
//TVOJ KOD ZA KURSNU LISTU
//Opciono izmeni file_get_contents sa cURL metodom
//Snimi rezultat u /cache/kursna_lista.html
//Verujem da vec ovo znas...ali eto :)
}
|
|
|
|
Poslao: 04 Feb 2011 00:01
|
offline
- |_MeD_|
- Zaslužni građanin
- Pridružio: 02 Okt 2005
- Poruke: 546
|
Bas ti je spora skripta treba mu vise od 2 sekunde.
A sto ti to ne kesiras na disku i parsiras 1 dnevno.
|
|
|
|
Poslao: 04 Feb 2011 00:16
|
offline
- N1k0l4
- Prijatelj foruma
- Pridružio: 06 Sep 2005
- Poruke: 3800
- Gde živiš: Beograd
|
Ok, hvala za savet, probacu sa ovim sto si dao za kesiranje.
Trenutno sam uradio da se smesta u bazu pa iz baze da cita a da se file_get_cotents poziva samo jednom dnevno (kad se osvezava lista) , ali rucno...
Probacu ovako kako si naveo da automatizujem.
PS. Citanjem iz baze mnogo brze odradi posao nego sa fgs
|
|
|
|
|
Poslao: 04 Feb 2011 08:58
|
offline
- |_MeD_|
- Zaslužni građanin
- Pridružio: 02 Okt 2005
- Poruke: 546
|
Jutarnji predlog.
Najelegantnije resenej je cron job koji ce 1 dnevno kad banka uodejtuje listu izgenerisati kurs.html na disku i posle njega koristis na stranici. To ce da trosi najmanje resursa.
Takodje proveri ako mozes dali je jos neko koristio tu skriptu za generisanje kursa, mozda je 'pozajmio' za svoj sajt.
|
|
|
|
Poslao: 04 Feb 2011 09:03
|
offline
- N1k0l4
- Prijatelj foruma
- Pridružio: 06 Sep 2005
- Poruke: 3800
- Gde živiš: Beograd
|
Hvala, to za cron je palo nocas i meni na pamet, videcu , verovatno cu tako da uradim.
Hvala na predlozima
|
|
|
|
Poslao: 04 Feb 2011 13:26
|
offline
- stankovic
- Prijatelj foruma
- Pridružio: 11 Maj 2005
- Poruke: 871
- Gde živiš: Aleksinac - Niš
|
Ili kesiranje sa cronom, ili da na toj stranici imas neki js koji poziva API na sajtu sa koga skidas kursnu listu. Mada je bolje kesiranje i cron uz koriscenje cURL biblioteke.
fopen, curl i druge slicne funkcije nikako ne smeju da idu na stranice koje se prikazuju korisnicima.
Prvo, opterecuju server, drugo, potrebno je nekoliko sekundi da vrate zeljenu stranicu, da je parsiraju i prikazu tvoju stranicu korisniku.
Vece vreme odziva takodje utice na google ranking.
Pored toga, pozeljno je kesiranje jos nekih stvari iz baze. Na primer, ako imas milione redova u nekoj od tabela, a potrebno je da iz te tabele izdvojis top 10 trazenih pojmova, bolje je da u odredjenim vremenskim intervalima imas cron koji ce tih 10 da izvuce iz tabele nego da to cinis za svakog korisnika posebno.
|
|
|
|