Dobrý den všem. Prosím o pomoc s problémem :
Na stránkách www.lyze-skialp.cz (tedy placený hosting) se v IE6 (FF v pořádku) někdy chybně zobrazí stránky (buď bílá, nebo s hláškou "stránku nelze zobrazit"). Děje se tak především na těch stránkách, kde jsou vytahována data z DB (fotografie a popis výrobků), ale nechtěl bych se k tomuto pravidlu upnout a hledám obecné řešení.
Zahlédl jsem zde 2 diskuze na toto téma, ale ani jedna problém nerozebrala ke konečnému řešení.
Ze střípkovitých informací si hraji s hlavičkou webu, takže v ní možná uvidíte nejasnosti.
V čem se vrtám : hlavička webu, Cache-control, Sessions (start, ukončení).
Jedná se tedy o problém hostingu, prohlížeče, kódu ? Děkuji moc za JAKÝKOLIV POSTŘEH. javari[a]centrum.cz
prosel jsem si ty stranky a je to skutecne divne, jeste jsem se s tim nesetkal. Obvykle tato chyba souvisi s cestinou v adrese, ale tady to dela i na strankach, kde cestina v adrese neni. Co me napadlo, je logovat si veskere udaje z PHP pole $_SERVER pri kazdem nacteni stranky (je to dost prostorove narocne) + po kazdem MYSQL prikazu zalohovat text prikazu a hodnotu nasledne volaneho mysql_error() (mysql_error by mel vracet prazdne retezce nebo false).
Problem totiz je, ze clovek ani nevi, co vlastne server dostal za informaci a jak ji zpracoval, protoze zadny vystup proste neexistuje.
1. co mne tak napada, ze mas spatne zaklicovanou SQL tabulku, proto se ne a ne spojit s SQL
2. prekrocil jsi limit SQL dotazu
SQL dotazy pisi zasadne takto s navratem die():
$dotaz = "SELECT * $dotaz1 $orderby LIMIT $from , $count2";
//echo "<hr>dotaz2 = $dotaz";
$vysl = mysql_query($dotaz) or die("<hr>Err ".$tbl['name'].": $dotaz<hr>".mysql_error());
a jeste si pro jistotu necham SQL dotaz vypsat, kdyz mam podereni na chybu.
SQL tabulky instaluji pres install.sql textovy soubor (usetri mi to spoustu prace mam instal.php, ktery umi SQL zpracovat)
Vypada to kuprikladu takto:
DROP TABLE IF EXISTS album_photo;
CREATE TABLE album_photo (
id int(11) NOT NULL AUTO_INCREMENT,
nick varchar(16) default NULL,
actived tinyint(1) UNSIGNED default NULL,
album int(11) default NULL,
text varchar(64) default NULL,
scoreA int(11) default NULL,
scoreB int(11) default NULL,
PRIMARY KEY(id),
KEY (nick),
KEY (album),
KEY (actived)
) TYPE=MyISAM;
-- ) TYPE=MyISAM COLLATE cp1250_general_ci;
a vsimni si, ze mam zaklicovane 0-6 nejcasteni pouzivanych polozek pro prikazy:
WHERE id=...
ORDER BY id=...
jinak vybiram z SQL pouze prikazy SELECT * nebo SELECT COUNT(*), zadne jine pro vyprani 1 polozky nebo tak, nepouzivam, protoze pozdeji vetsinou potrebuji jeste dalsi udaje z dane tabulky a zas bych musel volat SQL
pocitadlo na strance nema pro zakaznika vyznam. Zobrazoval bych jeho grafickou podobu az v admin sekci. Jednak nemusis cekat na vygenerovani obrazku na toplist (cimz se nacitani stranky zdrzuje a muze to byt i ten problem s nezobrazenim) a druhak, uzivateli to nic prinosneho neprinasi.
Javari, zkus si pořídit vlastní log soubor, psát průběh skriptu do nějakého souboru. Možná to pomůže. Na logování jsou v PHP fce. Taky není jasné, jestli je problém opakovatelný. To jak jsi tu hledal ty bílé stránky, co zlobily mě, to bylo naprosto neopakovatelné a objevovalo se náhodně. Už se mi to teď dokonce nestává.
peta: nenapadá mě spojitost s klíči na sloupečcích a spojením s db. To je podle mě kravina. Pokud nemáš na sloupcích klíče jsou pomalejší věci typu spojení tabulek, dohledání řádku (což pro tabulky do 10000 ř, podle mě, vůbec nepoznáš), ale že by nešlo připojit k db?
"Překlíčovaná" tabulka je navíc mnohem pomalejší, pokud do ní něco vkládáš.
No řekl bych , že by mohla být chyba v php kódu a se spojením na DB.Ale je možné, že za to může server.
Já mám zase jiné vysvětlení:
špatný mod_gzip.
Já se s tím na WZ potýkám snad všude: statické html, dinamicky genrované stránky bez session, se session bez MySQL, s MySQL, prostě všude...
jde to upravit v .htaccess pomocí
BrowserMatch \bMSIE !no-gzip