Moi!
Kokeilin eilen vieraskirjani uusinta versiota mbnetissä ja freepgs:ssä, eikä se (yllätys, yllätys) toiminut, vaan jää lataamaan (kuin jäisi silmukkaan). Kokeilin die:lla ja kommentoimalla etsiä vikaa, mutta kun sitä ei tunnu löytyvän sitten kirveelläkään. Windows XP:llä tuo toimii kyllä ihan täydellisesti.
Eli näyttäkäähän nyt nuijalle, missä tuossa on vika. Koodit löytyvät osoitteesta http://www.freepgs.com/turatzuro/zurogb/
ja onkelma löytyy
http://koti.mbnet.fi/turazuro/test/vieraskirja2
Eilenillalla yritin tosiaankin kolmisen tuntia hakea vikaa, eikä löytynyt sitten kirvelläkään uhaten... :D
Tuota... viekä vieraskirjasi muka yli 100kt? Ainakin index-tiedoston koko on yli 100kt. Siitä tietomäärästä ei juuri innosta lähteä virhettä hakemaan. Varsinkin kun tuo MBNettiin osoittava osoite näyttää tyhjää sivua.
Tuo on kyllä yllättävän suurikokoinen vieraskirja.. tosta ei ihan helpolla kyllä virhettä etsitä..
Niinpä...
Mutta jos joku niinkus kykenisi edes antamaan jonkunlaista vihjettä, mistä kannattaisi lähteä vikaa hakemaan? Kun tuo toimi kuitenkin windowsilla, ja lakkasi toimimasta linuxilla... eli perustaltaan koodissa ei pitäisi varmaankaan mitään vikaa sitten olla... :S
Juu ja se mbnettiin osottava sivu näyttää tyhjää sen takia, etä se juuri on se virhe: kuin jäisi ikuiseen silmukkaan.
Die-komentoja käyttämällä jumiutumisen aiheuttavan kohdan paikantaminen pitäisi onnistua aina, mutta sen siis olet jo tehnyt. Jos vika esiintyy vain tietyllä PHP-versiolla, kyseessä saattaa tosin olla jopa PHP:ssä oleva bugi. Itselläni kävi kerran niin, että tietty koodinpätkä ei toiminut, vaikka se varmasti oli oikein. Sitten kun kirjoitin saman koodin hieman toisella tavalla, virheitä ei enää tullut. Mutta yritä joka tapauksessa nyt ensiksi etsiä jumiutumiskohta - sen pitäisi kyllä onnistua, oli syy mikä tahansa.
Vika löytyi
jotenkin iski hirveä halu satuttaa itseäni :D Vika oli seuraavassa tiedostonavauskäskyssä:
fopen($lock_db,"x")
'x' -avaus ei ole tuettu kovin vanhoissa php:issa, jotenka vaihto 'w':n auttoi. On se kumma miten tuollaisen pikkuvian löytämiseen meni nelisen tuntia.
Mbnetissä on PHP versio 4.3.1
'x' moodi vaatii 4.3.2 version :P
Ihme että löysit tuollaisen vian, onnea :)
Hyvä, että vika selvisi! Outo juttu silti, että PHP ei antanut kunnollista virheilmoitusta.
Se fopen oli pultattu kiinni while-silmukkaan tällä tavalla:
while(($lock_or = @fopen($lock_db,"x")) === false && $tries<=25)
Sitten PHP:n oma suoritusaika tuli vastaan, ja se tappoi skriptan. Tuo tries-muuttuja olisi lopettanut whilen suorittamisen, mutta olin sen arvon kasvattamisessa tehnyt pienen mokan. :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.