DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   PHP (http://www.devprotalk.com/forumdisplay.php?f=9)
-   -   Kesiranje u HTML file i 500error problem (http://www.devprotalk.com/showthread.php?t=1162)

Baic 24. 06. 2006. 00:54

Kesiranje u HTML file i 500error problem
 
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:
Kôd:

$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. 05: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:
PHP kôd:

$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. 11: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. 11: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. 11: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. 20: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. 00: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. 11:37

hvalla Ivane ovih par dana nisam primetio da je bilo problema. nadam se da ce bisti sve Ok i ubuduce.


Vreme je GMT +2. Trenutno vreme je 18:52.

Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.

Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.