Archiwum - [gotowa modyfikacja] Spider Friendly - poprawki i odmulanie
Centurion - 09-02-2009, 01:23 Temat postu: [gotowa modyfikacja] Spider Friendly - poprawki i odmulanie UWAGA! Poniższa modyfikacja była tylko tymczasowym rozwiązaniem problemu z obciążeniem związanym z modem SPIDER FRIENDLY i nie będzie już rozwijana. Link do tematu z ostatecznym rozwiązaniem:
http://www.przemo.org/php...pic.php?t=69660
Mimo wszystko poniższy sposób poprawnie i może być stosowane na forach!
Piszę tutaj bo temat ze Spider Friendly jest standowczo za długi a problem jest dość poważny, w każdym razie Crack powinien coś z tym zrobić, ja podam tylko moje rozwiązanie
Problem występuje przy włączonej opcji przepisywanie ze słowami kluczowymi, mianowicie, przy dość dużej ilości tematów na forum każdorazowo przy zapisywaniu cache tworzy się lista wszystkich tematów i jest zapisywana do pliku. Pliki te potrafią mieć nawet po kilkaset kb i skutecznie zamulić serwer przy includowaniu. Dlatego lepiej trzymać tą wygenerowaną listę tematów w bazie danych, gdyż baza danych jest zawsze szybsza niż wczytywanie plików.
Oto moje rozwiązanie, które odmuliło już 4 fora:
Kod: | nadpisz plik includes/spider_friendly (jest w załączniku)
#--- [ SQL ] ---
CREATE TABLE `phpbb_sf_cache` (
`id` tinyint(1) NOT NULL auto_increment,
`text` longtext NOT NULL,
PRIMARY KEY (`id`)
);
INSERT INTO phpbb_sf_cache VALUES (1, '');
INSERT INTO phpbb_sf_cache VALUES (2, '');
INSERT INTO phpbb_sf_cache VALUES (3, '');
#--- [ OPEN ] ---
includes/constants.php
#--- [ FIND ] ---
?>
#--- [ BEFORE ADD ]---
define('SF_CACHE', $table_prefix . 'sf_cache');
#--- [ OPEN ] ---
includes/function_post.php
#--- [ FIND AND REMOVE ] ---
sql_cache('clear', 'multisqlcache_topics_sf');
#--- [ FIND ] ---
$topic_id = $db->sql_nextid();
}
#--- [ AFTER ADD ] ---
$sql = "UPDATE " . SF_CACHE . " SET text = ''";
$result = $db->sql_query($sql);
#--- [ OPEN ] ---
.htaccess
#--- [ FIND ] ---
RewriteRule ^cat([0-9]*)\.htm$ ./index.php?c=$1 [L,QSA]
#--- [ AFTER ADD ] ---
RewriteRule ^(cat|.*-cat)([0-9]+)\.htm$ ./index.php?c=$2 [L,QSA]
#--- [ OPEN ] ---
admin/admin_forums.php
#--- [ FIND ] ---
//należy dodać po każdym wystąpieniu tego - 7 razy
sql_cache('clear', 'forum_data');
#--- [ AFTER ADD ] ---
$sql = "UPDATE " . SF_CACHE . " SET text = ''";
$db->sql_query($sql); |
I to wszystko. Gwarantuję Wam że wasz serwer odetchnie.
Dodatkowo dodałem funkcję przepisywania nazw kategorii.
Uwaga.
Jeśli wyskoczy Wam błąd z max_allowed_packet skontaktujcie się z hosterem żeby ustawił większą wartość, aczkolwiek nie sądze żeby się to Wam przytrafiło.
Do Cracka: chyba sensowniej by było zrobić dodatkową komórkę w tabeli z tematami z przepisanym urlem nazwy tematu, generowanym przy pisaniu/edycji posta-tematu. Wydaje mi się że byłoby to nieporównywalnien optymalniejsze niż robienie listy tematów za każdym razem.
lui754 - 12-02-2009, 17:11
Centurion, ta poprawka nie działa poprawnie. Zainstalowałem to u siebie i na jakims forum i na początku jest ok ale póxniej powstaje problem bo nie da się napisać tematu. To znaczy wysyła wszystko ok ale jak chcemy wejść w temat to go nie ma na liście. Przy synchronizacji bazy za pomocą check_files wsykakuje lista tematów które są "puste"
Tak więc zobacz co jest nie tak. Tematów nie da się pisać a posty da.
smyku2 - 12-02-2009, 17:44
Na localhoście to sprawdzałem z ciekawości i był problem podobny, tylko, że przy pisaniu tematu wyskakiwało info że temat został napisany, po czym strona się odświeżała i witał nas komunikat "Taki temat lub post nie istnieje, albo został przed chwilą skasowany", i temat faktycznie znikał bez śladu.
Centurion - 12-02-2009, 17:58
to może być związane z max_allowed_packet, patrz wyżej
cv65 - 12-02-2009, 21:33
Centurion,
a mógłbyś napisac dokładnie co zmieniłęs w pliku
spider_friendly.php
Pzdro
Seba123 - 12-02-2009, 22:00
A porównać pliki to łaska ?
Centurion - 12-02-2009, 22:35
Słuchajcie sprawdzcie proszę w includes/function_post.php
przenieście Kod: | $sql = "UPDATE " . SF_CACHE . " SET text = ''";
$result = $db->sql_query($sql); |
POD
Kod: | $topic_id = $db->sql_nextid();
} |
silversurfer - 13-02-2009, 19:02
Centurion, Hm nie mam pewności czy wprowadzić zmiany, gdy wystąpią błędy da się jakoś cofnąć, pomijam skopiowanie wcześniej pliku .php mowa o zapytaniu sql.
kevin_ - 13-02-2009, 19:21
silversurfer, sądzę że wystarczy zapytanie:
Kod: |
DROP TABLE `phpbb_sf_cache`
|
bo utworzyliśmy NOWĄ TABELE i dodaliśmy do niej wpisy, więc sądzę że powinno być później "skutków ubocznych"
Centurion - 14-02-2009, 09:41
dokładnie jak kevin_ napisał, możesz potem tę tabelę spokojnie skasować jak coś pójdzie nie tak
szafa81 - 14-02-2009, 16:31
mod zainstalowany... poki co zadnych klopotow
nie wiem czy to zwiazane z nim ale mocno skrocil sie czas otwarcia strony podawany na dole forum
MagicalFire - 14-02-2009, 17:15
Cytat: | nie wiem czy to zwiazane z nim ale mocno skrocil sie czas otwarcia strony podawany na dole forum |
tak to jest zasługa tego uzasadnienie
Centurion napisał/a: | mianowicie, przy dość dużej ilości tematów na forum każdorazowo przy zapisywaniu cache tworzy się lista wszystkich tematów i jest zapisywana do pliku. Pliki te potrafią mieć nawet po kilkaset kb i skutecznie zamulić serwer przy includowaniu. Dlatego lepiej trzymać tą wygenerowaną listę tematów w bazie danych, gdyż baza danych jest zawsze szybsza niż wczytywanie plików. |
lui754 - 14-02-2009, 22:35
Teraz działa jak należy Forum działa nieco szybciej. Dziękujemy
Centurion - 14-02-2009, 23:16
Jeśli Crack nie zmieni tego przez jakiś czas to zrobię alternatywą wersję która będzie trzymać wygenerowany url w tabeli z tematami (generowany przy tworzeniu i edycji tematu) i wywalę wogóle tworzenie tej listy tematów za każdym razem. Będzie to najoptymalniejsze z możliwych rozwiązań chyba, aczkolwiek będzie wymagało dużych zmian w kodzie SF, a generalnie niechałbym wchodzić Crackowi w drogę.
miszko - 15-02-2009, 12:48
A co z bazą danych?
Jak duże mniej więcej generowane jest dodatkowe obciążenie dla bazy?
|
|
|