To jest tylko wersja do druku, aby zobaczyć pełną wersję tematu, kliknij TUTAJ
phpBB2 by Przemo
Support forów phpBB2 modified by Przemo

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 :lol:
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?



Powered by phpBB modified by Przemo © 2003 phpBB Group