phpBB2 by Przemo
Support forów phpBB2 modified by Przemo

FAQFAQ - PIERWSZA POMOC!!  regulaminREGULAMIN  SzukajSZUKAJ  UżytkownicyUżytkownicy  GrupyGrupy  StatystykiStatystyki
RejestracjaRejestracja  ZalogujZaloguj  DownloadDownload  katalog Forów DyskusyjnychKatalog Forów   FAQ Video tutoriale

Poprzedni temat «» Następny temat
Przesunięty przez: Matteo
09-11-2013, 09:30
Spider Friendly Optimized 1.0
Autor Wiadomość
Centurion



Pomógł: 543 razy
Posty: 1972
Wysłany: 05-03-2009, 02:02   Spider Friendly Optimized 1.0

Modyfikacja jest przeróbką moda Spider Friendly która jest finalnym rozwiązaniem problemu opisanego w temacie z tymczasową poprawką.

Dlaczego ta poprawka powstała i dla kogo jest przeznaczona?
Modyfikacja ta jest przeznaczona dla forów z dużą ilością tematów (zwłaszcza) i postów, które używają opcji z przepisywaniem adresów ze słowami kluczowymi lub wirtualnych tematów. W wersji oryginalnej informacje o wszystkich tematach, forach i postach w danym temacie (opcja przepisywania linków do postów na linki do tematów) są trzymane w cache i generowane w zależności od ustawień moda w PA i za każdym odświeżeniem strony pliki cache z tymi informacjami są wczytywane. Z czasem ich wielkość oczywiście rośnie i w pewnym momencie powoduje bardzo duże obciążenie serwera. Dlatego powstała moja modyfikacja, która nie korzysta z cache wogóle, a linki przepisuje w locie, ale tylko te które aktualnie wymagają przepisania. Przy tej samej funkcjonalności różnica w obciążeniu jest ogromna (tutaj kilka testów które zrobiłem na dedykowanych serwerach).

Co zawiera moja modyfikacja:
Kod:
 - zachowanie wszystkich funkcjonalności SF bez potrzeby używania cache
 - przepisywanie nazw kategorii, użytkowników i grup
 - brakujące przekierowania 301 dla nieprzepisanych tematów/userów/grup/kategorii
 - tytuł kategorii w pasku przeglądarki po wejściu w daną kategorię
 - nazwa użytkownika w pasku przeglądarki po wejściu na profil użytkownika


Uwaga
1. Instrukcja która została dołączona zawiera tylko wszystkie niezbedne przepisywania dla czystego forum 1.12.6p1 ze SF 1.3.12. Jeżeli macie inne mody które generują linki zawierające użytkowników, grupy, fora, kategorie, tematy i posty będziecie musieli dodać ręcznie kawałki kodu odpowiadające za przepisywanie. Bez tego linki wciąż będą działać poprawnie, jednak adresy będą inne niż na głównej części forum (możliwość pojawienia się duplicate content dla googla).

- Dla linków do tematów wymagane są nazwa tematu i id forum wg wzoru:
Kod:
$sfc['topics'][$row['topic_id']]['title'] = $sfc[$row['topic_title']];
$sfc['topics'][$row['topic_id']]['forum'] = $sfc[$row['forum_id']];


- Dla linków do postów wymagane są nazwa tematu, id forum, id tematu oraz kolejność posta (o tym ostatnim będzie poniżej) wg wzoru:
Kod:
$sfc['posts'][$row['post_id']]['title'] = $sfc[$row['topic_title']];
$sfc['posts'][$row['post_id']]['forum'] = $sfc[$row['forum_id']];
$sfc['posts'][$row['post_id']]['topic'] = $sfc[$row['topic_id']];
$sfc['posts'][$row['post_id']]['lp'] = $sfc[$row['post_lp']];


- Dla linków do forów wymagana jest nazwa forum:
Kod:
$sfc['forums'][$row['forum_id']] = $sfc[$row['forum_name']];


- Dla linków do kategorii wymagana jest nazwa kategorii:
Kod:
$sfc['cats'][$row[cat_id']] = $sfc[$row['cat_title']];


- Dla linków do profilów użytkowników wymagana jest nazwa użytkownika. Uwaga - jeżeli wasze linki przechodza przez funkcję color_username( to nie musicie tego wstawiać:
Kod:
$sfc['users'][$row['user_id']] = $sfc[$row['username']];


- Dla linków do grup wymagana jest nazwa grupy:
Kod:
$sfc['groups'][$row['group_id']] = $sfc[$row['group_name']];


Te dane są przykładowe i mogą się różnić w innych modyfikacjach.

Ważna informacja
Te wszystkie $sfc dla danego linku muszą być wstawiane przed wywołaniem append_sid(!

Wiem że dla laika wygląda to skomplikowanie, więc z czasem będziemy w postach w tym temacie podawać gotowe rozwiązania dla innych modyfikacji.

2. Aby wprowadzić przekierowania postów do tematów, na właściwą stronę tematu konieczne było wprowadzenie dodatkowej komórki w tabeli phpbb_posts o nazwie post_lp.
Jak nazwa wskazuje jest to kolejność postu w danym temacie, która aktualizuje się zależnie od potrzeb. Po zainstalowaniu tej modyfikacji nie istnieje żadna kolejność więc linki do postów będą zawsze kierować na pierwszą stronę tematu. Dopiero po wejściu na stronę tematu gdzie ten post faktycznie się znajduje wygeneruje się wspomniana kolejność i następnym razem link do postu będzie kierował już na poprawną stronę. Wiem że nie jest to zbyt przyjazne, ale było najprostszym i najoptymalniejszym sposobem jaki mi przyszedł do głowy.

Poniżej znajdują się pliki:

sf_optimized_update_from_sf_1_3_12.zip - standardowa instrukcja instalacji przy przejściu z SF 1.3.12 do mojej

sf_optimized_new_installation.zip - nowa instalacja którą się instaluje tak samo jak zwykłe SF, przeznaczona dla for które nie mają zainstalowanych jeszcze modów, a przynajmniej nie w tych plikach które zostały dołączone do paczki

sf_optimized_update_from_sf_1_3_12_patch.zip - plik .patch dla bardziej zaawansowanych (lub leniwych ;) ) użytkowników z przejściem z wersji 1.3.12 na moją.

Trzeba pamiętać o wykonaniu zapytania:
Kod:
ALTER TABLE phpbb_posts ADD post_lp MEDIUMINT(5) NOT NULL DEFAULT 0;


numposts.zip - służy do automatycznego nadania kolejności postom w tematach dla tych którzy chcą mieć poprawne linki do postów od razu, nie czekając aż to się wygeneruje po wejściu w temat. Instrukcja obługi: wgraj plik numposts.php w katalog z forum, wejdż na adres
Kod:
http://www.adrestwojegoforum/numpost.php
zalogowany jako administrator i uruchom skrypt.

Modyfikacja została przetestowana na trzech forach i nie zauważyłem żadnych problemów z nią związanych. Jeśli jakieś znajdziecie (lub jakieś nieprzepisane linki) to piszcie w tym temacie. Zapraszam do testowania.

Dla tych co mają problem z dublowaniem ikonek.

_________________
Poza forum pomagam tylko odpłatnie
• przenoszenie/łączenie/naprawianie baz danych
• instalacja/pisanie modów, aktualizacja for z zachowaniem modów
• programowanie php/mysql
Ostatnio zmieniony przez Matteo 11-11-2010, 15:01, w całości zmieniany 8 razy  
 
     
Gadatliwa Kasia 

   
Mateusz61


Pomógł: 33 razy
Posty: 282
Wysłany: 05-03-2009, 09:41   

Centurion tego nie ma w usercp_viewprofile.php
Kod:
#---[ FIND ]---
$viewcatkey = ($viewcat < 0) ? 'Root' : POST_CAT_URL . $viewcat;

#---[ AFTER ADD ]---
if($sfc['mod_rewrite_enabled'] == 1 && $viewcat > 0)
{
$sql = "SELECT cat_id, cat_title FROM " . CATEGORIES_TABLE . " WHERE cat_id = $viewcat";
if ( $result = $db->sql_query($sql) )
{
    if($row = $db->sql_fetchrow($result))
    {
        $sfc['cats'][$row['cat_id']] = $row['cat_title'];
    if (strpos($_SERVER['REQUEST_URI'], 'index.php?c') !== false && preg_match('#c=(\d+)#', $_SERVER['REQUEST_URI'], $cat_id))
    {
    redirect(append_sid("index.$phpEx?" . POST_CAT_URL . '=' . $cat_id[1], true), 301);
        }
    }
}
}

#---[ FIND AND REMOVE ]---
$page_title = $lang['Forum_index'];
include($phpbb_root_path . 'includes/page_header.'.$phpEx);

#---[ FIND ]---
     $template->assign_vars(array(
         'TOTAL_POSTS' => sprintf($l_total_post_s, $total_posts) . ', ' . $lang['topics'] . ' <b>' . get_db_stat('topiccount') . '</b>',
         'TOTAL_USERS' => sprintf($l_total_user_s, $total_users),

#---[ BEFORE ADD ]---
    $sfc['users'][$newest_uid] = $newest_user;

#---[ FIND ]---
//
// Generate the page
//

#---[ AFTER ADD ]---
if($viewcat > 0)
{
$cat_title = get_object_lang($viewcatkey, 'name');
$page_title = $cat_title;
}
else
$page_title = $lang['Forum_index'];
include($phpbb_root_path . 'includes/page_header.'.$phpEx);


jak opisałeś w instrukcji...
gdzie to znajdę :?:

[ Dodano: 05-03-2009, 09:53 ]
tu chyba też jest błąd:
portal.php
Kod:
#---[ FIND ]---
    $sql = "SELECT topic_id, topic_title

#---[ AFTER ADD ]---
    $sql = "SELECT topic_id, topic_title, forum_id


chyba powinno być zamień ale ja się nie znam pytam na wszelki wypadek...

[ Dodano: 05-03-2009, 10:00 ]
w tellafriend.php
nie mogę znaleźć tego
Kod:
#---[ FIND ]---
        $template->assign_block_vars('spy_row', array(

#---[ BEFORE ADD ]---
        $sfc['forums'][$row['forum_id']] = $row['forum_name'];
        $sfc['topics'][$row['topic_id']]['title'] = $row['topic_title'];
        $sfc['topics'][$row['topic_id']]['forum'] = $row['forum_id'];
        $sfc['users'][$row['user_id']] = $row['username'];
 
     
Centurion



Pomógł: 543 razy
Posty: 1972
Wysłany: 05-03-2009, 10:15   

Dzięki, pisałem to późno w nocy i byłem już bardzo zmęczony.

1. fragment powinno być przed tym

Kod:
#--- [ OPEN ] ---
index.php


2. Powinno być [ REPLACE WITH ] zamiast [ AFTER ADD ]

3. Przed tym powinno być

Kod:
#--- [ OPEN ] ---
topic_spy.php


Instrukcję zaraz podmnienię
_________________
Poza forum pomagam tylko odpłatnie
• przenoszenie/łączenie/naprawianie baz danych
• instalacja/pisanie modów, aktualizacja for z zachowaniem modów
• programowanie php/mysql
 
     
Lukasamd
[Usunięty]

Wysłany: 05-03-2009, 10:36   

1. Gdy na głównej kliknę w temat:
NAZWA_FORUM Ostatni post: TEMAT

to przenosi do ostatniego postu, gdy kliknę na nazwę tematu w szukajce od nieprzeczytanych, przenosi mnie do pierwszego postu w temacie a nie do nieprzeczytanego.

2. Gdy wyłączam przepisywanie, przekierowanie się zapętla i nic nie można zrobić.

EDIT:

Zamieniłem w viewtopic.php:

Kod:
    // Avoid double-linking of topics and redirect user
    redirect(append_sid("viewtopic.$phpEx?" . POST_TOPIC_URL . '=' . $forum_topic_data['topic_id'] . ($start > 0 ? "&start=$start" : ''), true) . '#' . $post_id, 301);
    $start = floor(($forum_topic_data['prev_posts'] - 1) / $user_posts_per_page) * $user_posts_per_page;


na:

Kod:
    $start = floor(($forum_topic_data['prev_posts'] - 1) / $user_posts_per_page) * $user_posts_per_page;


i teraz mam odwrotnie - przy szukajce działa, przy stronie głównej już nie :)
 
     
Centurion



Pomógł: 543 razy
Posty: 1972
Wysłany: 05-03-2009, 11:05   

oj chyba nie doczytałeś tego co napisałem

Kod:
2. Aby wprowadzić przekierowania postów do tematów, na właściwą stronę tematu konieczne było wprowadzenie dodatkowej komórki w tabeli phpbb_posts o nazwie post_lp.
Jak nazwa wskazuje jest to kolejność postu w danym temacie, która aktualizuje się zależnie od potrzeb. Po zainstalowaniu tej modyfikacji nie istnieje żadna kolejność więc linki do postów będą zawsze kierować na pierwszą stronę tematu. Dopiero po wejściu na stronę tematu gdzie ten post faktycznie się znajduje wygeneruje się wspomniana kolejność i następnym razem link do postu będzie kierował już na poprawną stronę. Wiem że nie jest to zbyt przyjazne, ale było najprostszym i najoptymalniejszym sposobem jaki mi przyszedł do głowy.


co do viewtopic.php to chyba coś źle wstawiłeś

[ Dodano: 05-03-2009, 12:34 ]
Dodałem automatyczny synchronizer kolejności postów w tematach. Można go użyć żeby poprawić wszystkie linki do postów za jednym zamachem.
_________________
Poza forum pomagam tylko odpłatnie
• przenoszenie/łączenie/naprawianie baz danych
• instalacja/pisanie modów, aktualizacja for z zachowaniem modów
• programowanie php/mysql
 
     
Lukasamd
[Usunięty]

Wysłany: 05-03-2009, 12:43   

Po wywaleniu tego co miałem w viewtopic (tak jak pisałem w poprzednim poście) i synchronizacji śmiga tak jak powinno ;)

Czas generowania głównej spadł mi z 0,08s na 0,06s
Konto shared, serwer litespeed, php5-fastcgi + ecaalerator

EDIT:
Mam pomysł, a może by tak dać słowa kluczowe do linku "Wersja do druku"? Roboty chyba lubią takie strony indeksować.
 
     
$kubi


Posty: 109
Wysłany: 05-03-2009, 14:37   

Zainstalowałem do siebie - ktoś może wejść i zobaczyć czy działa to jak należy?

Czy widząc stronę główną i chcąc kliknąć na ostatni link w temacie też macie taki skrót: "/postlink/59619.htm#59619" - a dopiero jak się kliknie i otworzy to na górze jest juz pelna nazwa tematu?
 
     
Centurion



Pomógł: 543 razy
Posty: 1972
Wysłany: 05-03-2009, 14:39   

$kubi, a masz ustawione w konfiguracji SF przepisywanie linków do postów na linki do tematów?
_________________
Poza forum pomagam tylko odpłatnie
• przenoszenie/łączenie/naprawianie baz danych
• instalacja/pisanie modów, aktualizacja for z zachowaniem modów
• programowanie php/mysql
 
     
$kubi


Posty: 109
Wysłany: 05-03-2009, 14:43   

Centurion, wydawało mi się, że miałem - ale faktycznie zmieniłem i już jest okej :)
W razie poprawek muszę teraz obserwować ten temat :D

Dobra robota!
 
     
Centurion



Pomógł: 543 razy
Posty: 1972
Wysłany: 05-03-2009, 14:47   

Swoją drogą nadal Ci coś zacina, nie masz jakichś dziwnych modów, albo jakichś wielkich plików w cache (np widziałem kiedyś akcje że ktoś dodał wszystkich użytkowników na forum do grupy z 0 postami a miał ich ich kilkanaście tysięcy i zarżnał serwer kompletnie).
Tak samo jak ktoś narobi baaardzo dużo for i poprzydziela do nich moderatorów to też potarfi zaciąć serwer.
Skrajne przypadki ale trzeba uważać na to.
_________________
Poza forum pomagam tylko odpłatnie
• przenoszenie/łączenie/naprawianie baz danych
• instalacja/pisanie modów, aktualizacja for z zachowaniem modów
• programowanie php/mysql
 
     
$kubi


Posty: 109
Wysłany: 05-03-2009, 14:52   

Centurion, wiem, nadal coś tnie i nie wiem za co się złapać - ale mamy się przenieść na inny szybszy serwer - jak to nie pomoże to wtedy będę myślał co to może być...

Konto testowe: test ; test1 jakby ktoś chciał zerknąć...

Co do dużej ilości for i moderatorów - jak to inaczej rozwiązać u mnie?

Bo co do tych plików cache to nie mam ich jakiś mega wielkich chyba... folder cache cały zajmuje 720KB


EDIT:
Tak na prawdę pierwszym podejrzanym jest serwer...

EDIT2:

Wysłalem PW Centurion
Ostatnio zmieniony przez $kubi 05-03-2009, 15:26, w całości zmieniany 1 raz  
 
     
Centurion



Pomógł: 543 razy
Posty: 1972
Wysłany: 05-03-2009, 15:20   

$kubi, dane do forum mi nic nie dadza, bardziej interesujący jest czas generowania forum i wielkość plików w cache, przynajmniej tych powyżej > 50 kb, które to są
_________________
Poza forum pomagam tylko odpłatnie
• przenoszenie/łączenie/naprawianie baz danych
• instalacja/pisanie modów, aktualizacja for z zachowaniem modów
• programowanie php/mysql
 
     
MagicalFire


Pomógł: 980 razy
Posty: 4353
Wysłany: 05-03-2009, 15:23   

Centurion, mam włączone przypisywanie linków czy jak zastosuje tego moda zmienia mi się linki ?
_________________
nie za takie Przemo walczyliśmy
 
     
Centurion



Pomógł: 543 razy
Posty: 1972
Wysłany: 05-03-2009, 15:25   

Linki do for, tematów i postów zostają te same które możesz sobie ustawić normalnie w SF.

Przy przepisywaniu ze słowami kluczowymi zmienią się za to linki do kategorii (z nazwą kategorii), profilów użytkowników (z nazwą użytkownika) i do grup (z nazwą grupy).
_________________
Poza forum pomagam tylko odpłatnie
• przenoszenie/łączenie/naprawianie baz danych
• instalacja/pisanie modów, aktualizacja for z zachowaniem modów
• programowanie php/mysql
 
     
Gadatliwa Kasia 

   
szafa81

Pomógł: 1 raz
Posty: 62
Wysłany: 05-03-2009, 16:26   

Centurion, a co w przypadku kiedy wczesniej zainstalowalo sie:

-Nazwa użytkownika w tytule strony z jego profilem
-Nazwa kategorii w tytule strony
-Przepisywanie linków do kategorii z ich nazwami

:?:

nie chce narobic balaganu :roll:
_________________
Pozdrawiam, szafa.
 
     
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Nie możesz ściągać załączników na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Kopiowanie wszelkich treści zawartych na forum, modyfikacji oraz instrukcji bez zgody administracji i autorów tematów/postów zabronione!

Powered by phpBB modified by Przemo © 2003 phpBB
Strona wygenerowana w 0,13 sekundy. Zapytań do SQL: 13
Polecane serwisy

Najlepsze oprogramowanie do prowadzenia sklepu internetowegoNajlepszy program do sklepu firmowany przez Przem'a

Sklep z gadżetami

Design Cart - Tworzenie sklepu internetowego

iRonin.IT

• Zamów reklamę