Sprawdź prawdziwe obciążenie MyBB – poprawka

Jako że tworzę dodatki do MyBB i wiem, że czasami niektóre problemy trzeba rozwiązywać nieco na około, zdaję sobie sprawę z tego, czego forum MyBB wam otwarcie nie mówi. Nie wiem z czego to wynika, ale autorzy skryptu tak umieścili ostatni uchwyt dla pluginów, że to co one robią nie jest widoczne w statystykach i danych debugowania. Dla osób zainteresowanych obciążeniem ich forów może to być ważne – skrypt nie pokazuje ani prawdziwego czasu, ani użytej pamięci, ani wykonanych zapytań, no chyba że nie używacie żadnych dodatków.

Można jednak wykonać niewielką zmianę, aby dane te były widoczne. Niczym to nie grozi i jest bardzo proste. Edytujemy plik inc/functions.php

Szukamy:

zamieniamy na:

następnie szukamy:

zamieniamy na:

i to już wszystko.
Po tej prostej operacji statystyki w stopce forum będą pokazywać faktyczne dane, podobnie strony z rozpiską zapytań do bazy.
Dlaczego jest to istotne? Bo ten uchwyt wykorzystywany w zasadzie na koniec generowania forum jest bardzo przydatny w wielu sytuacjach i sporo pluginów na pewno się do niego odwołuje. Im więcej, tym bardziej zaniżone statystyki obciążenia obserwujecie bez tego zabiegu.

Mini-poprawkę, sugestię co do zmiany kolejności wysłałem już do autorów skryptu, może zechcą przesunąć kod nieco wyżej, aby administratorzy nie musieli robić tego samodzielnie.

Przeglądarka (user agent) w spisie online dla MyBB

Skrypt MyBB jest naprawdę ciekawy. Darmowy, prężnie rozwijany, posiada multum rozszerzeń, a na dodatek jest naprawdę intuicyjny. W niektórych miejscach zastanawiam się jednak, dlaczego autorzy skryptu zrobili coś tak a nie inaczej. Dzisiaj przykład tego typu. Skrypt posiada oddzielną stronę ze spisem osób będących online (włącznie z gośćmi). Wyświetla on datę ostatniej aktywności, miejsce w którym był użytkownik – np. “przegląda dział testowy” – a dla administratorów także adres IP. Tutaj jest moim zdaniem coś niewykorzystanego. MyBB w bazie danych, w tabeli od sesji trzyma informacje o przeglądarce jaką posługuje się użytkownik, zapis user agenta. Oczywiście nie jest to wartość zaufana, użytkownik może ją swobodnie modyfikować, ale jej znanie w przypadku nagłego natłoku gości może pozwolić na wyjaśnienie problemów np. wykrycie zbyt upartego robota indeksującego, który zawala nas wieloma instancjami z wielu serwerów.
Continue reading “Przeglądarka (user agent) w spisie online dla MyBB”

Łamanie linii w znaczniku [PHP] w MyBB

No i znowu piszę o MyBB, jak widać, coś ostatnio natchnęło mnie na rozgrzebanie kilku rzeczy w tym skrypcie. Jedną z nich jest automatyczne łamanie linii np. w cytatach. Właśnie gdy używamy znaczników bbcode/mycode “quote” lub też “code” i wewnątrz nich umieścimy obszerne linijki, zostaną one automatycznie złamane i tekst nie “rozwali” nam posta, nie będzie również tworzył scroolbara w poziomie. Niestety to samo nie dotyczy już znacznika do umieszczania i kolorowania kodu php, który został zawarty w MyBB. Swoją drogą, ciekawe po co w ogóle wyposażyli skrypt forum dyskusyjnego standardowo w coś takiego, na większości for będzie to zupełnie nieprzydatne…

Dobra, mniejsza z tym, przejdźmy do analizy problemu i rozwiązania. Po rzuceniu okiem na klasę zajmującą się parsowaniem wiadomości możemy zobaczyć, że za kolorowanie i “problem” odpowiada wbudowana w PHP funkcja highlight_string odpowiedzialna jak sama nazwa mówi właśnie za kolorowanie tego kodu. Ma ona to do siebie, że wszelkie spacje, odstępy itp. zostają zamienione na spacje twarde, niełamliwe czyli “ ”. Da się to jednak przeskoczyć poprzez dodanie funkcji, która będzie zamieniała takie pojedyncze betonowe mury na zwykłe odstępy. Edytujemy więc plik inc/class_parser.php, odnajdujemy na samym końcu fragment:

i dodajemy przed nim:

następnie odszukujemy fragment (ok. linii 826):

i dodajemy przed nim taki fragment:

I to już wszystko, zapisujemy plik i umieszczamy na serwerze. Od tej chwili kod zawarty w znacznikach php również będzie łamany, przez co unikniemy bloków z ogromnymi rozmiarami oraz przewijania w poziomie. Oczywiście ma to pewną wadę: takie złamanie linii wiąże się w niektórych wypadkach z utratą oryginalnego formatowania tzn. coś, co było w jednej linii, może nam zjechać i utworzyć niższą. Rzecz jasna nie będzie to powodowało nieprawidłowego działania, bowiem występuje gdy utworzenie spacji lub łamania linii jest możliwe i dozwolone.