Drupal keresőoptimalizálás előadás

A Drupal Hétvége 2010 konferencián (2010. november 13-14.) előadást tartok Drupal keresőoptimalizálás témában. Érdemes eljönni, mert az én előadásomon kívül is igen sok érdekes téma lesz.

Aki a webes világban dolgozik, legyen akár döntéshozó, reklámszakember vagy honlapkészítő, annak érdemes eljönnie.

A konferencia ingyenes, de előzetes regisztráció szükséges. Jelentkezési határidő: november 7. (vasárnap)

Ha eljössz, keress meg, és igyunk meg egy pohár sört üdítőt.

Update: Az előadás fóliái a slideshare-en:

Volt egy másik, 5 perces előadásom is. Ott az Állás.IT indulásáról beszéltem:

Állás.IT - Informatikai állás és munka ajánlatok

Az Állás.IT egy informatikai állás és munkakereső weboldal. Úgy gondolom van igény egy olyan oldalra, ahol a munkavállalók elmondhatják a véleményüket az egyes cégekről, és ahol kérdéseket tehetnek fel az álláshirdető cégnek még mielőtt jelentkeznének a pozícióra.

Egy másik fontos szempont az oldal kialakításánál az egyszerű és letisztult kezelőfelület volt. Én nagyon nem szeretem a kilométer hosszú formokat, és szerintem más sem. Ezért a hirdetésfeladás űrlap csak a legeslegfontosabb mezőket tartalmazza. Minden másra ott a hirdetés szövege.

Az egyszerűség ellenére az oldalon használt címke rendszer igen erőteljes eszköz, nagyon jól kereshetővé válik ezáltal az oldal.

Bevezető reklámkampánynak indítottam egy nyereményjátékot, ahol lehet nyerni akár egy iPhone 4 telefont egy twitter üzenetért és egy regisztrációért cserébe. Szerencsére nagyon népszerű a játék, a yamm.hu trendben többször első pozícióban volt a játék.

Az oldal természetesen Drupalban készült, ezt mondanom sem kell. A bejelentkezésénél és üzenet küldésnél használt modális felugró ablakot elég nehezen sikerült megvalósítani, azt hittem erre létezik kész modul. Sajnos a létező modulok, itt használhatatlanok voltak. Később tervezek erről egy plusz bejegyzést, volt néhány érdekes dolog amit megtanultam ezzel kapcsolatban.

Az oldal és a játék külalakja bVisual munkáját dicséri, aki ilyen szép logókat is tud csinálni:

Nagyon bízom az oldal sikerében, eddig minden jól alakul :)

SEO előadás és Google Rankings modul

  • google rankings
  • seo

Mindenki visszajött már a nyári pihenésből, így holnap, azaz szeptember 30.-án, végre meg lesz tartva a "várva várt" Drupal SEO modulok előadásom. Helyszín, időpont a drupal.hu-n.

Ide kapcsolódik, hogy néhány napja már elérhető a Drupal.org-ról is a saját fejlesztésű Google Rankings modulom. Majd írok ide egy részletes bemutatást. Most csak annyit róla, hogy a Google által küldött látogatókról ad egy elég részletes statisztikát, benne olyan információval, amit sem más naplófájl analizáló, sem a közkedvelt Analytics nem ad. Akit érdekel töltse le és próbálja ki. Én már több éles oldalon futtatom kb, 2 hónapja ezt a kódot, úgyhogy elég stabilnak mondható.

Debian és Ubuntu szervereken a Drupal sessions tábla túl nagyra nő

Probléma: Ha Debian vagy Ubuntu szerveren futtatsz Drupal-t és a session kezeléssel kapcsolatos beállításokat nem állítottad át a php.ini-ben, akkor a Drupal sessions tábla soha nem lesz ürítve, ezért túl nagyra fog duzzadni, napról napra egyre jobban lelassítva a weboldaladat.

Megoldás: A Drupal settings.php-be szúrd be ezt a két sort:

<?php
ini_set
('session.gc_probability',   5);
ini_set('session.gc_divisor',       100);
?>

és esetleg finomhangold ezt a sort:
<?php
ini_set
('session.gc_maxlifetime',   200000);
?>

Egy másik megoldás, ha a .htaccess fájlba vagy az Apache virtualhost definícióba szúrod be ezt a két sort:
php_value 'session.gc_probability' 5
php_value 'session.gc_divisor' 100

Miért csak Debian alapú szervereken?

Nade mit is csinál ez a két sor és miért kell ezzel külön foglalkozni a Debian alapú szervereken?

Ahhoz, hogy megértsük a problémát, bele kell kicsit mélyednünk a Drupal lelkivilágába.

Nem csak az asztali gépemen fut Ubuntu, hanem szervernek is szívesen használom. Így vettem észre, hogy az f1vilag.hu oldalon, ami egy elég forgalmas site, a session táblában nagyon sok bejegyzés van. Hamar kiderült, hogy a táblából soha nem kerülnek ki a régi sorok, mindig csak az újak kerülnek beszúrásra.

Utánanéztem, hogy ez hogyan lehetséges, és egy kis keresgélés után kiderült, hogy a Drupal a sess_gc nevű függvényében ürítené a táblát. Az is hamar kiderült, hogy ezt a függvényt nem közvetlenül hívja meg a Drupal, hanem indirekt módon, a PHP-t kéri meg, hogy néha hívogassa ezt a függvényt, amikor a PHP azt jónak látja. Ezt egyébként úgy éri el a Drupal, hogy a session_set_save_handler függvény 6. paramétereként megadja visszahívandó callback függvényként a 'sess_gc'-t.

A PHP egy véletlen sorsolással dönt arról, hogy mikor kell meghívni a munkamenet szemétgyűjtőt, ismertebb nevén a session garbage collectort. A fent beállított értékek esetén, minden 100 oldalletöltés esetén átlagosan 5 alkalommal fog végrehajtódni a takarítás.

Ez mint szép és jó, de miért nem teszi ezt meg magától a PHP Debian alatt és miért teszi meg más rendszerek alatt? A választ megkapjuk, ha bepillantunk a php.ini ide vonatkozó részébe egy Ubuntu vagy Debian alatt:

; Define the probability that the 'garbage collection' process is started
; on every session initialization.
; The probability is calculated by using gc_probability/gc_divisor,
; e.g. 1/100 means there is a 1% chance that the GC process starts
; on each request.

; This is disabled in the Debian packages, due to the strict permissions
; on /var/lib/php5.  Instead of setting this here, see the cronjob at
; /etc/cron.d/php5, which uses the session.gc_maxlifetime setting below.
; php scripts using their own session.save_path should make sure garbage
; collection is enabled by setting session.gc_probability
;session.gc_probability = 0
session.gc_divisor     = 100

Debian alatt tehát ki van kapcsolva a php beépített session garbage collection funkciója, és helyettesítve van egy ütemezett feladattal (cronjob). Ami viszont csak annyit tesz, hogy a php session fájljait törölgeti félóránként. Ezért nem lesz soha meghívva a drupal sess_gc függvénye és ezért nő a sessions tábla a végtelenségig. A php.ini-ben, mint fent olvashattuk, nem is érdemes visszakapcsolni ezt a funkciót. Inkább a Drupal-ban állítsuk vissza ezt a funkciót, amelynek hatására már rendszeresen meg fog hívódni a sess_gc függvény és nem nő a végtelenségig a sessions tábla.

Oldalak

Feliratkozás Prunk-Éger Edgár RSS csatornájára