(premasagar nuotrauka)
Ne apie komentarų kultūrą ar šlamšto brukimą šį kartą. Apie rimtas technines šio tinklaraščio problemas, neleidžiančias skaitytojams normaliai rašyti savo minčių, atsiliepimų ir dalyvauti diskusijoje. Jei jūs išmanote Linux, Apache, SQL ar WordPress, labai prašau pagalbos – gal kartu surasime išeitį?
Pasistengsiu būti tikslus, kaip medikas.
Ligos simptomai:
- Parašius komentarą ir paspaudus mygtuką „Siųsti komentarą“, tinklalapis labai ilgai (apie 10 s ar daugiau) neperkraunamas, o kai persikrauna – tiesiog atsiranda baltas fonas (komentuojantis yra „permetamas“ į „wp-comments-post.php“).
- Jei komentarą administratorius rašo administravimo sąsajoje, tai 1) arba teksto laukelis taip ir lieka aktyvus po atitinkamo 10 s ar daugiau laukimo; 2) arba atsiranda užrašas apie „rastą pasikartojantį komentarą“ (klaidingas, nes nesikartoja niekas).
- Abiem atvejais komentaras paskelbiamas sėkmingai, nesėkmingai vyksta tik tinklalapio perkrovimas.
Analizė (mano loginės išvados):
- Kadangi viskas užstringa „wp-comments-post“ dokumente, logiška buvo jį patyrinėti. Beveik visas jis yra skirtas komentaro apdorojimui prieš skelbiant. Komentaras paskelbiamas tvarkingai ir greitai (bandžiau su antra naršykle žiūrėti vos paspaudęs mygtuką „Siųsti komentarą“ – jis atsiranda beveik akimirksniu), tad stringa tik tinklalapio perkrovimas po komentaro įdėjimo, kitaip tariant, tik paskutinės trys „wp-comments-post“ eilutės:
$location = empty($_POST['redirect_to']) ? get_comment_link($comment_id) : $_POST['redirect_to'] . '#comment-' . $comment_id;
$location = apply_filters('comment_post_redirect', $location, $comment);
wp_redirect($location);
- Akivaizdu, kad kažkodėl nesuveikia nukreipimas „redirect“ į tinklalapį jau su įdėtu komentaru. Kas gali turėti įtakos šios funkcijos veikimui? Pirmiausiai įtarimas krenta įskiepiams, ypač pastoviųjų nuorodų „permalinks“ ir šlamšto filtrams. Turiu tris tokius: Akismet, Raven’s Antispam ir Dean’s Permalinks Migration (DPM). Akismet nebuvau išjungęs (bet jį gi visi naudoja!), o kitus buvau išjungęs – nepadėjo. Labiausiai įtariau DPM, nes radau nukreipimo problemų aprašymą (ir užuominą, kur gali būti problema). DPM dabar išjungtas, bet problemos nesibaigė. Nukreipimo funkcijos yra ir „htaccess“ faile. Gal čia kokios bėdos? Dėl viso pikto pateikiu „mod_rewrite.c“ turinį – jei pastebėsite klaidų, pataisysiu:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
- Lfx spėja, kad gali būti ir Apache problema – serveris po komentaro nespėja išanalizuoti kodo ir atlikti nukreipimo. Tuomet reikėtų derinti Apache nuostatas (kurių aš išvis neišmanau). Šį spėjimą iš dalies patvirtintų retkarčiais sėkmingai, bet po ilgo laukimo perkraunamas tinklalapis. Ta sėkmė lyg ir padidėja mažiausio serverio apkrovimo metu (naktį, anksti iš ryto).
Konsiliumas
Na štai – o dabar jau laukiu jūsų nuomonės, patarimų ir pagalbos. Nemanykite, kad šis įrašas – pirmas bandymas ieškoti sprendimo. Junginėjau pats, ką mokėjau, bandžiau su įskiepiais ir be, bandžiau iš naujo diegti WordPress, bandžiau ieškoti informacijos Google ir WordPress forumuose (radau tik vieną šiek tiek panašią problemą su OpenID). Niekur nieko neradau, todėl be šio įrašo nebežinau, ką daryti. Atiduosiu dukrą į žmonas ir pusę karalystės (arba atitikmenis) mainais į sprendimą. Nes kitaip lieka tik uždaryti visus komentarus, įdiegti WordPress į atskirą aplanką ir pradėti naują tinklaraštį, šį paliekant kaip archyvą…

61 Comments
Nezianu, kodel, bet vaizdas per monitoriu visai issiformataves: kategorijos ant teksto ir reklamos tuscias langas iskrites :(
Nenaudok IE7, naudok IE8 :)
Su įvairiomis naršyklėmis dar nebandžiau, todėl su senulėmis gali būti klaidų. Žinau tik, kad su naujausiomis Firefox, Internet Explorer ir Safari versijomis viską gerai rodo.
Man su IE8 blogai rodo…
Tai gal beta naudoji… ATnaujink :D
Tai kad, ne beta. Bet dar ir perinstaliavau – vis tiek blogai. Tiesa, jau ne taip blogai kaip buvo:)
Pasirodo reikėjo išjungti „compatibility view“, nes šitie MS pagerinimai ir iškraipydavo:)))
Šiandien viskas iš vis keista. Nerandu vietos, kur tiesiog parašyti komentarą, matau tik galimybę atsakyti į jau esantį komentarą.
O dėl ilgo krovimosi, tai taip apgaudavau kenkėją – prieš siųsdama komentarą atsidarydavau dar vieną svetainės langą. Kol pirmasis langas kabodavo, bandydamas įsiūlyti mano komentarą, aš antrajame sau kitus puslapius skaitydavau.
Pamėgink wp_redirect($location); , pakeisti į header(„Location: $location“); Bet negarantuoju, nes negaliu dirbti ant tikro bugo :) o tik isivaizduoti kur galetu buti klaida :), jei tas daikciukas neveiks tada ismes klaida, tada bus aiškiau :)
Taip pat labai dažnai redirektas neveikia del neteisingo failo kodavimo, geriausia nautoti utf-8 :)
Dar vienas sprendimas jei nepadeda, kaip minejai del apache, tai pabandyk pries redirekta sleep(1); funkciją įdėt :) Gal padės, o jei ir tai ne parašyk į emaila man, manau rasim išeitį :)
O gal pas tave uždėtas maksimalus skripto veikimo laikas, arba maksimalaus RAM limitas? Turėtų klaidą rodyt, bet gali būt kad pas tave išjungtas klaidų rodymas. Manau tikrai galima problemą atrast, rašyk ir man į el.paštą, padėsiu kiek galėsiu :)
Šiaip vienaip ar kitaip standartiškai skripto vykdymo laikas 30s, visi sutiks, kad nulūžta greičiau…
Tai tada reikia bent klaidų rodymą įjungt, jei jis išjungtas. Nes nemanau, kad šiaip „iš oro“ pradeda neveikt. Nors panašiai buvo dar pas kažką…
Na notice’ai nėra labai blogai. PHP nėra tokia griežta kalba, jog reiktų pvz. nustatyt kintamuosius ar panašiai, bet dėl jų meta notice. Žodžiu, variantą paminėjo, pažiūrėti kaip atrodo error log’as. Dar galima bandyt sekt bendrą tinklaraščio ‘generation time’, blogiausiu atvėju profile’int ir žiūrėt, kas veikia lėčiau, kas gali trūkdyt. Arba gali dėti ajax paremtus komentarus, tada apeitų tą pabugintą kodą ir vartotojas pamatytų savo gražų komentarą iškart :)
Šiaip jei darei copy paste tai pataisyk:
#comment- sita zodi parasyk normaliose viengubose kabutese :)
Su IE6 ir IE7 KOMENTARAI, ARCHYVAS ir TEMOS uzvirte ant teksto ir siaip visas puslapis smarkiai issikraipes.
susikišk tuos savo IE pats žinai kur ;]
+1
good one
ini_set(‘display_errors’, ‘on’); error_reporting(E_ALL); gal ka pagausi konkretesnio jei bedos su wp o ne apache
į ekraną klaidų vesti nederėtų. Geriau pasidaryk kad logintų į error logą, kas manau jau yra padaryta, tik reikia jį patikrinti. Minėtas white-screen’as tikrai daug šansų kad įvyksta klaida. šeip wp nepasižymi tvarkingu kodu, ypač įskiepiai. pastoviai notice’ai ir warning’ai lenda.
Kažkodėl man rodos jog arba php skriptas užsiciklina, arba koks nors cache mechanizmas trukdo, kuris gali būti tiek iš apache pusės, tiek iš php ar wordpress pusės. Dar gali būti, jog parašius komentarą skritpas bando kreiptis į kokį serverį, kuris labai ilgai neatsako. Tai būtų galim abndyti ieškoti profilyje, arba pasinaudoti php-fpm generuojamu logu: http://php-fpm.anight.org/
Aplamai, jeigu blogas patiria dideles apkrovas, kodėl nepasinaudoti nginx + php-fpm, ar kokių kitų hight load sprendimų.
Dar vienas pasiulymas, jeigu naudoji per php-fcgi tai uždėk
cgi.nph = 1
nustatymą, kad visada skriptai mestų 200
Dar, mano nuomone, reiktų visą svetainę centruoti ekrane… Dabar kažkaip keistai nukrenta į kairę ir tiek.
Jei būtų galima – gal galėčiau gauti zip archyvą blogo? (ar bent plugin folderio)
Numanau, ką reiškia toks baltas langas, tiesiog reikia man pasižiūrėti konkrečius failus. Tai tikrai neturėtų būti nei apache, nei mod_rewrite problema.
Be to, nežinau.lt lankomumas spėju yra apie 4’000 lankytojų per dieną. Tokį srautą atlaikyti dabartiniam serveriui turėtų būti juokai.
Juozai, ačiū tau už pasiūlymą padėti. Išsiųsiu tuoj archyvą.
Nėra už ką. Aš paprašysiu tada pridėti (jei įmanoma) ir phpmyadmin duomenis, turiu minčių, kad gali kažkuris pluginas būti pasidėjęs į pluginų duomenis didžiulį kiekį info; kažkuri užklausa labai godi.
Nebandei tiesiog šabloną default laikinai užsimesti ir pažiūrėt ar veikia? :) Lygiai kaip WP naują lygiagrečiai suinstaliuot, ir pažiūrėt ar veik. Taigi paprasčiausia patikrint taip. Jei veikia default install, reiškia ne servas kaltas. Jei veikia šablonas, reiškias šalbono arba plugin klaida. Aišku, jei visus plugin išjungi, tai šablonas liewas. :) Taip pat galbūt tik SQL optimize ar repair reik, jei tiesiog kokia eilutė su klaida ir parina viską..
SQL krutinti bandžiau, bet ne iš esmės. Šablonas ko gero niekuo dėtas, nes bandžiau savaitgalį su penkiais skirtingais – tas pats mėšlas.
tai negali fresh installas neveikti. Arba kaip kažkada sakiau, serveriai.lt dėl visko kalti, hihi. :D
Gražus dizainas, tik svetainės laukelis komentuojant dabar per daug pasirinkimų man duoda:)
Dar vieną komentarą bandau:) Kažkaip įdomu pasidarė pasiaiškinti kas čia gali būti…
geriausias anti spamas – matematinis. ir visus trackback uždraudus – to užtektų. per daug pluginų, kurie apkrauna be reikalo. dar reiktų paanalizuot sql’us kurie per ilgai vyksta
Juozas patarė išjungti turinio įskiepį SRG Clean Archives. Bandom, ar be jo greitai veikia. Jei gerai – rasiu, kuo pakeisti arba net išvis apsieisiu. :)
VEIKIA! Aš išgelbėtas! Komentuojam dabar visi, kaip bepročiai!!! :D
Aš siūlau išmėginti Yawasp. Pas mane nei 1 boto nepraleido iki šiol, o naudotojo patogumo tai visiškai neįtakoja.
Dėkui, pasižymėjau. Dabar naudoju Raven’s Antispam, kuris veikia panašiu principu. Veikia efektingai ir irgi be JavaScript. Reikės palyginti abu įskiepius.
Laiminga pabaiga =)
OK. IE 6/7 skilčių rodymą sutvarkysiu jau ryt, nes namie neturiu kaip testuoti.
Tą komentarą kūrė ****
Kai parašai komentarą, jis paima visus mėnesius (nuo gyvavimo pradžios). Kiekvienam mėnesiui paima visus įrašus. Kiekvienam įrašui paima komentarų kiekį. Ir sukonstruoja kažkokius linkus (acrhyvo?). Nežinau yra 11k įrašų, taigi jis paleidžia kokias… 25k užklausų. Tokio užklausų kiekio visas blogas per keletą valandų neprigeneruoja, kiek čia bandoma per vieną užklausą prastumt :)
Bandom komentuoti :)
Jėga, veikia greitai :)
na tai ką Juozui priklauso dukra ir puse karalystės ;)
džiaugiuosi :) pasitvirtina taisyklė – kuo mažiau įskiepių – tuo sveikiau :) naujoji mano versija turės irgi daug mažiau įskiepių
žiūrim ką turim
Man tai labai patinka AJAX’iniai komentarai, kai visai neperkrauna puslapio.
Ir turbut butu ne sunku tai padaryti nieko nekeiciant, tik idejus javascipt’o trukstamo ir dar gal grazinima tik komentaru turinio.
Dabar, kai esminiai dalykai sutvarkyti, po truputį pradėsiu dėlioti viską gražiau ir patogiau. Gal ir AJAX komentarus padarysiu su redagavimo galimybe, jei smarkiai serverio neapkraus.
Nesilpni pasikeitimai blogo išvaizdoje:)
Mano kompiuteryje dabar ir Internet Explorer viską rodo tvarkingai. Gal kas gali patvirtinti?
Su IE7 (ir Maxthon) dabar rodo gerai.
IE8 lyg ir gerai
Dar norėčiau pasiulyti padaryti komentarų prenumeratą emeilu, nes labai sunku sekti naujus komentarus. Plius kai įdiegėte hierarchinę sistemą, tai šiviso tapo baveik nebeįmanoma
nereikia :) nusispamins iki negalėjimo
Su IE6 dabar jau graziai rodo.
Nors vienas nesklandumas dar yra. Ikonikes yra uzslipusios ant komentuotoju vardu ir dengia pirmaja raide. Vietoj „vienastoks“ matosi „ienastoks“.
O pagaliau viskas susitvarkė :)
Su FF3 jau viskas OK veikia dabar :)