PDA

Pogčedajte punu verziju : Kesiranje u HTML file i 500error problem


Baic
24. 06. 2006., 01:54
Zbog velokog broja loada strana koje vuku iz baze mnogo podataka a source je krcat ogromnim brojem funkcija sto mi natera server da se slogira cim dobije preko 400 zahteva u minuti, primoran sam da ih prikazujem u HTMl formatu, tj. periodicno u odnosu na potrebu osvezavanja sadrzaja uz pomoc php aplikacije loadujem dinamicke strane i njihov sadrzaj snimim kao HTML stranice. I to u potpunosti resava problem sa loadom, server neoseca i daleko veci broj poziva html strana.

Ali povremeno se javlja jedan problem i nikako da shvatim gde gresam.

Za kreiranje stranica koristim sledece naredbe:
$filename = fopen ( "$strana.html" , "w+" );
fwrite ( $filename , "$sadrzaj" );
fclose ( $filename );
unset ( $filename );


a problem koji se javlja je sledeci, kada browser pozove stranicu server vrati 500 error.

Ako preko FTPa sa Total Comanderom obradim stranicu tako da je snimim u ANSI ili Unicode formatu server je prikaze, ali onda je botovi vide samo kao skup znakova iako se u browseru prikazuje kao html.

Strane bi inace trebale da budu u UTF-8 encodingu, problem se resi ako strane downloadujem i u nekom Web Editoru ih ponovo snimim kao utf-8, po uploadu vide se bez problema cak ih i botovi citaju.

E sada gde sam napravio gresku, ovo nisam do skora radio pa je moguce da sam nesto izostavio.

ivanhoe
24. 06. 2006., 06:15
a sto koristis w+ kad nista ne citas iz fajla ?

Sto se problema tiche mozda da fajl otvoris kao binarni, zvuci mi kao da ti se izvrsi neka konverzija kod upisa. Znaci:
$filename = fopen ( "$strana.html" , "wb" );

Uzgred ova tvoja metoda ima ozbiljan problem oko visestrukih upisa u isti fajl.. moras da imas na umu da je web server multi-task okruzenje i da vise procesa moze da proba paralelno da ti snimi isti fajl... znaci moras ili da radis lockovanje ili da koristis jedinstvena imena fajlova, pa da onda uradis rename u konacno ime stranice (ovo drugo je elegantnije i malkice brze)

Baic
24. 06. 2006., 12:31
Hvala Ivane.

Samo te nisam najbolje shvatio za imena fileova.
Kod mene ime filea moze da bude sastavljeno od mekoliko reci razdvojenih -, a primetio sam i to da kada downloadujem file pa ga otvorim u txt editoru da mu je ime ne kako sam ga kreirao nego kao kod DOSa nesto~.

Nije problem da napisem dodatnu aplikaciju koja bi radila rename fileova posle kreiranja samo mi milim te pojasni kako mislis da koristim jedinstvena imena fileova.

bojan_bozovic
24. 06. 2006., 12:39
@Baic

Najbolje da u bazi drzis samo ono sto treba, tj. sto korisnik moze da upisuje - postove, komentare i sl. da, template ne, inace je fancy da se nabije u bazu i ono sto treba i sto ne treba, pa baza crkne. Tvoj problem je problem losega dizajna aplikacije.

Baic
24. 06. 2006., 12:45
Moj problem i jeste u bazama imam 5 baza ukupne velicine ~8.4GB a mnoge informacije se cupaju random sto je i najveci problem, a da sada odradim i dodatne baze za kesiranje mozda bi pomoglo ali prostor bio dodatno multipliciran.

nekako mi je kesiranje u HTML bilo najbolje resenje, pre svega i sto mi botovi lodaju dnevno i preko 80.000 strana

ivanhoe
24. 06. 2006., 21:41
Postoje 2 nacina da izbegnes da ti 2 procesa otvore isti cache fajl i krenu da brljaju po njemu istovremeno. Za primer uzmimo da zelis da kreiras fajl neka_strana.htm koji ce da sluzi za keshiranje, mozes da:

- koristis flock() da lockujes fajl neka_strana.htm, pa da onda upisujes u njega.
- upisujes u privremeni fajl sa nekim random imenom (mozes da koristis tmpfile() za to) i onda kad si zavrsio sa upisom, uradis rename na tom tmp fajlu u neka_strana.htm. Ovo ima prednost jer ne zahteva lockovanje (zbog nacina na koji rename funkcionise na unixu da ne ulazim sad u detalje oko inodova). Zbog toga je brze jer dok ti pises podatke u taj tmp fajl, ostali procesi mogu i dalje da citaju cache-irane podatke iz neka_strana.htm fajla (nema potrebe da cekaju da se upis zavrsi kao kod lockovanja)

Baic
25. 06. 2006., 01:12
Hvala na pomoci sredicu ove dve izmene nocas pa cu pratiti stanje par dana, nadam se da ce pomoci.

Samo se nadam da nije do serverske postavke, ko ce naci sta je problem.

Boccio ako procitas ovo samo reci posto ako se nevaram i tvoja aplikacija SeoChef pociva na ovom sistemu, da li se neko od klienata zalio da na nekom hostu ima problema iako fileovi postoje.

Hvala svima,
Pozdrav.

Baic
30. 06. 2006., 12:37
hvalla Ivane ovih par dana nisam primetio da je bilo problema. nadam se da ce bisti sve Ok i ubuduce.