Kaip išgydyti komentarus?

komentaras30
(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ą…

This entry was posted in svetainė and tagged , , , , . Bookmark the permalink. Both comments and trackbacks are currently closed.

61 Comments

  1. Posted 2009.3.30 at 15:15 | Permalink

    Nezianu, kodel, bet vaizdas per monitoriu visai issiformataves: kategorijos ant teksto ir reklamos tuscias langas iskrites :(

    • Posted 2009.3.30 at 15:35 | Permalink

      Nenaudok IE7, naudok IE8 :)

    • vienastoks
      Posted 2009.3.30 at 15:37 | Permalink

      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.

      • Mindauqas
        Posted 2009.3.30 at 16:52 | Permalink

        Man su IE8 blogai rodo…

        • Posted 2009.3.30 at 17:05 | Permalink

          Tai gal beta naudoji… ATnaujink :D

          • Mindauqas
            Posted 2009.3.30 at 21:50 | Permalink

            Tai kad, ne beta. Bet dar ir perinstaliavau – vis tiek blogai. Tiesa, jau ne taip blogai kaip buvo:)

          • Mindauqas
            Posted 2009.3.31 at 1:08 | Permalink

            Pasirodo reikėjo išjungti „compatibility view“, nes šitie MS pagerinimai ir iškraipydavo:)))

      • Galva neneša
        Posted 2009.3.30 at 18:14 | Permalink

        Š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.

  2. Posted 2009.3.30 at 15:29 | Permalink

    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 :)

  3. Posted 2009.3.30 at 15:31 | Permalink

    Taip pat labai dažnai redirektas neveikia del neteisingo failo kodavimo, geriausia nautoti utf-8 :)

  4. Posted 2009.3.30 at 15:48 | Permalink

    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į :)

  5. Posted 2009.3.30 at 16:00 | Permalink

    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 :)

    • Posted 2009.3.30 at 16:03 | Permalink

      Šiaip vienaip ar kitaip standartiškai skripto vykdymo laikas 30s, visi sutiks, kad nulūžta greičiau…

      • Posted 2009.3.30 at 16:15 | Permalink

        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ą…

      • Posted 2009.3.30 at 17:21 | Permalink

        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 :)

  6. Posted 2009.3.30 at 16:07 | Permalink

    Šiaip jei darei copy paste tai pataisyk:
    #comment- sita zodi parasyk normaliose viengubose kabutese :)

  7. Lupikas
    Posted 2009.3.30 at 16:42 | Permalink

    Su IE6 ir IE7 KOMENTARAI, ARCHYVAS ir TEMOS uzvirte ant teksto ir siaip visas puslapis smarkiai issikraipes.

  8. armis
    Posted 2009.3.30 at 16:47 | Permalink

    ini_set(‘display_errors’, ‘on’); error_reporting(E_ALL); gal ka pagausi konkretesnio jei bedos su wp o ne apache

  9. Donatas
    Posted 2009.3.30 at 17:12 | Permalink

    į 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.

  10. Posted 2009.3.30 at 18:34 | Permalink

    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/

  11. Posted 2009.3.30 at 18:37 | Permalink

    Aplamai, jeigu blogas patiria dideles apkrovas, kodėl nepasinaudoti nginx + php-fpm, ar kokių kitų hight load sprendimų.

  12. Posted 2009.3.30 at 18:47 | Permalink

    Dar vienas pasiulymas, jeigu naudoji per php-fcgi tai uždėk

    cgi.nph = 1

    nustatymą, kad visada skriptai mestų 200

  13. Posted 2009.3.30 at 19:18 | Permalink

    Dar, mano nuomone, reiktų visą svetainę centruoti ekrane… Dabar kažkaip keistai nukrenta į kairę ir tiek.

  14. Posted 2009.3.30 at 19:28 | Permalink

    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.

  15. Posted 2009.3.30 at 19:30 | Permalink

    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.

  16. Posted 2009.3.30 at 19:37 | Permalink

    Juozai, ačiū tau už pasiūlymą padėti. Išsiųsiu tuoj archyvą.

    • Posted 2009.3.30 at 19:39 | Permalink

      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.

  17. Posted 2009.3.30 at 19:55 | Permalink

    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ą..

    • vienastoks
      Posted 2009.3.30 at 20:02 | Permalink

      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.

      • Posted 2009.3.30 at 21:32 | Permalink

        tai negali fresh installas neveikti. Arba kaip kažkada sakiau, serveriai.lt dėl visko kalti, hihi. :D

  18. Posted 2009.3.30 at 19:57 | Permalink

    Gražus dizainas, tik svetainės laukelis komentuojant dabar per daug pasirinkimų man duoda:)

    • Posted 2009.3.30 at 20:04 | Permalink

      Dar vieną komentarą bandau:) Kažkaip įdomu pasidarė pasiaiškinti kas čia gali būti…

  19. Posted 2009.3.30 at 21:10 | Permalink

    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

    • vienastoks
      Posted 2009.3.30 at 21:33 | Permalink

      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. :)

      • vienastoks
        Posted 2009.3.30 at 21:34 | Permalink

        VEIKIA! Aš išgelbėtas! Komentuojam dabar visi, kaip bepročiai!!! :D

    • Posted 2009.3.31 at 7:49 | Permalink

      Aš siūlau išmėginti Yawasp. Pas mane nei 1 boto nepraleido iki šiol, o naudotojo patogumo tai visiškai neįtakoja.

      • vienastoks
        Posted 2009.3.31 at 7:59 | Permalink

        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.

  20. Posted 2009.3.30 at 21:47 | Permalink

    Laiminga pabaiga =)

  21. Posted 2009.3.30 at 21:48 | Permalink

    OK. IE 6/7 skilčių rodymą sutvarkysiu jau ryt, nes namie neturiu kaip testuoti.

  22. Posted 2009.3.30 at 21:50 | Permalink

    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 :)

  23. Posted 2009.3.30 at 21:59 | Permalink

    Bandom komentuoti :)

  24. Posted 2009.3.30 at 22:00 | Permalink

    na tai ką Juozui priklauso dukra ir puse karalystės ;)

  25. Posted 2009.3.30 at 22:56 | Permalink

    džiaugiuosi :) pasitvirtina taisyklė – kuo mažiau įskiepių – tuo sveikiau :) naujoji mano versija turės irgi daug mažiau įskiepių

  26. :)
    Posted 2009.3.31 at 0:34 | Permalink

    žiūrim ką turim

  27. aladin
    Posted 2009.3.31 at 6:44 | Permalink

    Man tai labai patinka AJAX’iniai komentarai, kai visai neperkrauna puslapio.

    • aladin
      Posted 2009.3.31 at 6:46 | Permalink

      Ir turbut butu ne sunku tai padaryti nieko nekeiciant, tik idejus javascipt’o trukstamo ir dar gal grazinima tik komentaru turinio.

      • vienastoks
        Posted 2009.3.31 at 7:25 | Permalink

        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.

  28. Posted 2009.3.31 at 8:55 | Permalink

    Nesilpni pasikeitimai blogo išvaizdoje:)

  29. vienastoks
    Posted 2009.3.31 at 10:50 | Permalink

    Mano kompiuteryje dabar ir Internet Explorer viską rodo tvarkingai. Gal kas gali patvirtinti?

    • Posted 2009.3.31 at 10:57 | Permalink

      Su IE7 (ir Maxthon) dabar rodo gerai.

  30. Posted 2009.3.31 at 11:21 | Permalink

    IE8 lyg ir gerai

  31. Posted 2009.3.31 at 11:24 | Permalink

    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

    • Posted 2009.3.31 at 20:00 | Permalink

      nereikia :) nusispamins iki negalėjimo

  32. Lupikas
    Posted 2009.3.31 at 11:49 | Permalink

    Su IE6 dabar jau graziai rodo.

    • Lupikas
      Posted 2009.3.31 at 11:51 | Permalink

      Nors vienas nesklandumas dar yra. Ikonikes yra uzslipusios ant komentuotoju vardu ir dengia pirmaja raide. Vietoj „vienastoks“ matosi „ienastoks“.

  33. Posted 2009.3.31 at 14:16 | Permalink

    O pagaliau viskas susitvarkė :)

  34. Posted 2009.4.2 at 17:45 | Permalink

    Su FF3 jau viskas OK veikia dabar :)