Smarty Caching mit Xcache

1. February 2010 21:53

Wer schon einmal mit der Template Engine “Smarty” gearbeitet hat, wird sich spätestens, wenn es um den Einsatz dieser Lösung in High Traffic Umgebungen geht, darüber ärgern dass Smarty den Cache der Templates auf der Festplatte realisiert. Aus diesem Grunde habe ich bereits vor 2 Jahren eine Lösung entworfen, welche sich nun nach langem “Test” als durchaus brauchbar erwiesen hat und ich sie somit hier mal vorstellen möchte.
Grundlage ist die Tatsache, dass sich Smarty recht einfach mittels Plugins erweitern lässt, und sich somit auch ein anderer Cache Handler unterjubeln lässt.
Ich benutze bevorzugt für “Single Server Lösungen” Xcache mit lokal aktiviertem variablen Cache

<?php
/**
 * Smarty Xcache Caching Handler
 *
 * @author Alexander Over <alexander.over@koeln.de>
 * @copyright 2008
 */
function xcache_cache_handler($action, &$smarty_obj, &$cache_content, $tpl_file = null, $cache_id = null, $compile_id = null)
{
  if (function_exists('xcache_isset'))
  {
    $cacheid = 'smarty.'.$tpl_file.'@'.$cache_id.'@'.$compile_id;
    switch ($action)
    {
      case 'read':
        if (xcache_isset($cacheid))
        {
          return xcache_get($cacheid);
        }
        else
        {
          return false;
        }
      case 'write':
        return xcache_set($cacheid, $cache_content, $smarty_obj->cache_lifetime);
      case 'clear':
        if (empty($cache_id) and empty($compile_id) and empty($tpl_file))
        {
      	 return xcache_clear_cache(1, 0);
        }
        else
        {
          if (xcache_isset($cacheid))
          {
            return xcache_unset($cacheid);
          }
          else
          {
            return false;
          }
        }
      default:
      	$smarty_obj->trigger_error('cache_handler: unknown action "'.$action.'"' );
        return false;
    }
  }
  else
  {
    $smarty_obj->trigger_error('cache_handler: Xcache not found!');
    return false;
  }
}

geladen wird das ganze am einfachsten folgendermaßen:

<?php
require_once 'Smarty.class.php';
require_once 'xcache_cache_handler.php';

$smarty = new Smarty();
if (function_exists('xcache_isset'))
{
  $smarty->cache_handler_func = 'xcache_cache_handler';
}

Donwload der Datei: xcache_cache_handler.php

Detect Opcode Cache in PHP

25. January 2010 23:10

Vor einer Woche etwa habe ich meine erste PHP Klasse auf phpclasses.org veröffentlicht, um mal zu schauen, wie die “Gemeinde” darauf reagiert.
Ich bin überrascht, wie ich es mit dieser “Notable” Class binnen 7 Tagen in Google auf Platz 1 zum Suchbegriff “detect opcode cache” geschafft habe.

Diese Singleton Klasse ermöglicht es z.B. in einem PHP Setup auf einfache Art und Weise herauszufinden, ob auf dem gewählten Server ein Opcode-Cacher läuft oder nicht und ggf. entsprechend zu reagieren.

Wer die Klasse einsetzen möchte findet sie hier: http://www.phpclasses.org/browse/package/5930.html

In einer Woche etwa dürfte die zweite Klasse von mir folgen, welche dann einen sehr gerne gemachten Fehler - insbesondere von PHP-Anfängern gerne gemacht - auf einfache und sichere Weise unterbindet.

UPDATE 01.02.2010:
Wie ich eben erfahren habe, ist diese Klasse für den Januar Award nomiert worden und steht zur Abstimmung bereit.

Einfach mal den Vogel abschiessen

21. June 2009 10:25

Man stelle sich mal vor man ist auf dem Sommerfest der eigenen Firma.

Die Zeit ist schon fortgeschritten und man hat ein oder zwei Bierchen schon Inkludiert.

Man ist gerade dabei, das ein oder andere Bier auf der Toilette des Etablissements zu entsorgen, als man bemerkt, dass es wohl jemand mit den Zielübungen beim entsorgen des großen Geschäftes nicht so ganz genau genommen hat. Genau genommen folgender Wortlaut:

Ich: “hmm, da hat jemand auf den Boden geschissen.
Geschäftsführer: “Aha, aha, wer ist denn da auf der Toilette ?“.

Merke: erst prüfen WER da gerade am Pinkeln ist, dann feststellen, dass jemand ins Eck geschissen hat.

:D

Nun auch ueber IPv6 erreichbar

15. May 2009 11:25

Ich habe mir mal im Zuge der Notwendigkeit einen IPv6 Tunnel geleistet und diesen auf den Server geroutet.

Somit ist dieser Blog ab heute auch über IPv6 zu erreichen.

Entweder per http://[2001:470:1f14:1704::2]
oder Ihr löst den host per v6 auf, dann geht es auch wie bisher über den Hostnamen.

Fragen ? Keine ? Gut !

IPv6 Certification Badge for CyberLine

Karo erklaerts mir

15. April 2009 14:12

Nachdem Ich Ihr den Pudel des Todes nahegebracht habe, hat Sie nun eines ihrer Filmchen damit verschönert, aber seht selber:

http://www.dailymotion.com/user/karo-erklaert-it/video/x8xau0_folge-125-
was-ist-eine-domainy_fun

Jetzt auch bei Twitter

20. March 2009 10:10

Alle sind jetzt im Twitterwahn, da konnte ich natürlich nicht widerstehen und habe mich auch dort angemeldet.

Zu finden ist mein Profil hier: http://twitter.com/CyberLine

Melina ist da!

24. November 2008 09:15

Viel früher als erwartet und auch ohne große Vorankündigung bin ich Freitag Abend schon Papa geworden.

Was war passiert ?

Am 13.11 wurde Susanne mit verdacht auf Gestose nach Brühl ins Krankenhaus eingewiesen.
Am 19.11 wurde sie von Brühl nach Köln in die Uni Frauenklinik verlegt, weil man Angst hatte, eine Frühgeburt in Brühl nicht handhaben zu können.
Am 20.11 sah es aus, als würde sie Freitags entlassen und nach Hause kommen, da alle Werte wieder in Ordnung waren.

Freitag Mittag dann der erschreckende Anruf: “Du mußt kommen, die holen die Kleine. JETZT!”

(Sie glauben gar nicht wie schnell man in so einer Situation den Freitäglichen Berufsverkehr abfrühstückt)

20 Minuten Später war ich dann auch in der Klinik, wo schon der Kaiserschnitt vorbereitet wurde, da es doch alles recht schnell gehen mußte, da die kleine von der Plazenta unterversorgt wurde.

Um 17:47 war Melina Sophia dann auf der Welt und ich durfte sie als erstes in den Arm nehmen.
Was für ein Gefühl! Das kann man nicht beschreiben, dass muß man erlebt haben.

Mittlerweile geht es Frau und Kind so gut, dass wohl beide schon diese Woche nach hause dürfen, obwohl sie ein Frühchen ist.

Und hier noch ein erstes Bild von der kleinen Maus:

Melina

Die weiteren Daten:

Gewicht: 2100gramm
Größe: 45cm
Kopfumfang: 32cm

Mehr von Melina Sophia gibt es in Zukunft hier auf Ihrer eigenen Webseite: www.melinasophia.de

Mobbing²

16. October 2008 14:47

Die pinke Ära geht weiter.

Neue Firma neues Glück. ES, hat es sich nicht nehmen lassen, mich zu verzieren, aber seht selber:

Ohren

Ich fühl mich gleich viel Plüschiger :D

I can has cheezburger

13. August 2008 10:00

Mein erster Auftritt auf icanhascheezburger.com:

funny pictures

Ferres in Pastell

6. August 2008 11:08

Bei einem meiner Streifzüge durchs Web stieß ich auf Seraphin Art, eine Seite mit Kunstbildern von Tieren.
Zufälligerweise fand ich dort sogar meinen Kater als gemaltes Bild. Da mir das Bild sehr gut gefällt, werde ich jetzt mal schauen, dass ich die Künstlerin erreiche, um ein Exemplar zu erwerben.

Ferres