PHP: Event-Driven Programming mit WAMP (WebSockets)

Das WebSocket Application Messaging Protocol ist ein Protokoll welches WebSockets nutzt um Funktionen wie RPC (Remote Procedure Call) und PubSub (Publish & Subscribe) anzubieten. Intern werden die Nutzdaten mit Hilfe von JSON transportiert. Mittlerweile existieren einige Implementierungen um WAMP (http://wamp.ws) einzusetzen. Für PHP gibt es z.B. Ratchet: (http://socketo.me) . Ratchet ist eine lose gekoppelte Bibliothek, die einem Entwickler die Möglichkeit gibt, eine bi-direktionale Echtzeitkommunikation zwischen Client und Server in PHP umzusetzen. Als Gegenstück für den Server kann die JavaScript-Bibliothek Autobahn (http://autobahn.ws/js) verwendet werden.

Vorraussetzungen für die Beispielimplementierung:

  • PHP 5.4 Interpreter (idealerweise XAMPP auf Laufwerk C:)
  • Browser mit WebSocket-Support
  • Features:

  • An Topic anmelden / abmelden
  • Nachricht versenden / empfangen
  • Remote Procedure Call
  • Über WebSockets bewegliches DIV
  • Screenshot Client:
    WAMP Beispielimplementierung Client
    Screenshot Server:
    WAMP Beispielimplementierung Server

    PHP: Event-Driven Programming mit WAMP (WebSockets) weiterlesen

    Ausführungszeit innerhalb eines PHP-Skripts messen

    Leider bietet PHP keine native Möglichkeit um die Ausführungszeit innerhalb eines Skripts zu messen. Um die Performance von Code-Blöcken zu steigern, muss zuerst die leistungsschwache Stelle ausgemacht werden. Hierbei kann die Klasse „StopWatch“ behilflich sein.

    class StopWatch
    {
        private static $fTimeStart = 0.00;
        private static $fTotal = 0.00;
       
        public static function start()
        {
            self::$fTimeStart = microtime(true);
            self::$fTotal      = 0.00;
        }
       
        public static function stop()
        {
            $fTimeEnd = (microtime(true)-self::$fTimeStart);
            echo "Zeit: ".number_format($fTimeEnd, 15)."s\n";
        }
    }

    StopWatch::start();

    for($i = 0; $i < 1000000; $i++)
    {
        //mache irgendetwas...
    }

    StopWatch::stop();

    /*
     * Ausgabe:
     * Zeit: 0.051145076751709s
     */

    Titel einer Webseite mit PHP auslesen

    Die nachfolgende Methode liest den Titel einer beliebigen HTML-Seite mit Hilfe von PHP aus.

    function getPageTitle($sURL)
    {
        if( ($sHTML = file_get_contents($sURL)) &&
            preg_match("/<title>(.+)<\/title>/i", $sHTML, $aTitle))  
        {
            return trim($aTitle[1]);
        }
        return false;
    }

    echo utf8_decode(getPageTitle("http://sklueh.de"));

    /*
     * Ausgabe:
     * Sebastian Klüh | Softwareentwicklung und was mich sonst so beschäftigt.
     */

    PHP: Simple Table Builder

    Simple Table Builder ist eine PHP Klasse, mit der sich HTML-Tabellen auf Grundlage eines mehrdimensionalen Arrays erzeugen lassen. Um die Usability zu verbessern wurde das jQuery-Plugin „Flexigrid“ (http://flexigrid.info) verwendet.

    Features:

  • Titel-Text
  • Definition der Spaltenüberschriften
  • Höhe und Breite der Tabelle festlegen
  • Spaltensortierung
  • Definition der Spaltenbreite
  • Festlegen einer Standard-Spaltenbreite
  • Screenshot:

    Anwendungsbeispiel:

    require_once('SimpleTableBuilder.php');

    $aTableData = array_fill(0, 15, array('Vorname' => 'Max', 'Nachname' => 'Mustermann', 'Straße' => utf8_decode('Musterstraße 10')));
    $oSimpleTableBuilder = new SimpleTableBuilder();
    $oSimpleTableBuilder->setHeader('Vorname', array('Nachname' => '150'), utf8_decode('Straße')); //Die Breite einer Spalte kann über ein Array definiert werden (In diesem Fall: 150 Pixel). Ansonsten wird der Standardwert verwendet.
    $oSimpleTableBuilder->setTitle('Mein Array');       //Festlegen der Tabellen-Überschrift (optional)
    $oSimpleTableBuilder->setTableData($aTableData);    //Hier wird das Array übergeben, aus dem eine Tabelle erzeugt wird.
    $oSimpleTableBuilder->setHeight('300');             //Festlegen der Höhe (optional)
    $oSimpleTableBuilder->setWidth('600');              //Festlegen der Breite (optional)
    echo $oSimpleTableBuilder->buildTable();            //Tabelle erzeugen

    PHP: Simple Table Builder weiterlesen

    Responsive Design: Media Query

    Unter Responsive Design versteht man die dynamische Anpassung des Webseiten-Layouts an das Darstellungsmedium. Beispielsweise wird das GitHub-Ribbon in der oberen rechten Ecke erst ab einer Breite von 500 Pixeln angezeigt. Dafür ist dieser Code verantwortlich:

    Style-Angabe

    <style type="text/css"> @media all and (max-width: 500px) { #github_ribbon { display:none; } } </style>

    HTML

    <a href="https://github.com/sklueh"><img id="github_ribbon" style="z-index:2; position: absolute; top: 0; right: 0; border: 0;" src="https://s3.amazonaws.com/github/ribbons/forkme_right_orange_ff7600.png" alt="Fork me on GitHub"></a>

    50 hilfreiche Werkzeuge zum Thema Responsive Design:
    50 fantastic tools for responsive web design