Archiv für MyOOS Tipps

PHP Unconference 2009

Der Termin für die diesjährige PHP Unconference steht fest.
Sie findet am 12. und 13. September in Hamburg statt.

Philosophenturm, University Hamburg
Von-Melle-Park 6

Diese und weitere Informationen dazu sind auf
http://www.php-unconference.de/ zu finden.

Was ist eine Unconference?

http://www.php-unconference.de/pages/about.html

Erste Beta von PHP 5.3

Die Beta 1 von PHP 5.3 steht bei Johannes Schlüter zum Donwload bereit. Er ist zusammen mit Lukas Kahwe Smith als Release Manager für PHP 5.3 verantwortlich.

http://schlueters.de/blog/archives/98-PHP-5.3-reached-beta-status.html

via golem

Yahoo gibt Client-Performance-Tipps

Yahoos Exceptional-Performance-Team beschäftigt sich mit der Frage, wie man Webseiten schneller macht, von Maßnahmen auf Serverseite über die Inhalte bis hin zu Cookies, JavaScript, CSS-Bildern und den speziellen Anforderungen mobiler Webseiten. Nach den ersten 14 Regeln für schnellere Webseiten hat Yahoo 20 weitere Tipps veröffentlicht.

Die 14 Tipps decken Themen wie “Mache weniger HTTP-Anfragen”, “Nutze Content Delivery Network”, “Ergänze einen Expires Header” und “Mach Ajax Cacheable” ab.

Mit “YSlow” bietet Yahoo zudem ein Add-on für die Firefox-Erweiterung Firebug an, die aufzeigt, wie sich die Geschwindigkeit einer Website anhand dieses Regelgerüsts verbessern lässt.

Auf der PHP Quebec Conference in Montreal stellt Yahoo-Ingenieur Stoyan Stefanov 20 weitere Tipps für schnellere Webseiten vor. Die Vortragsfolien stehen bei Yahoo online.

via Golem

Tags: , , , ,

Der MySQL Query-Cache

Der MySQL Query-Cache beschleunigt in den meißten Fällen die Abfragen. Er ist ab der Version 4 von MYSQL enthalten.

Mit dem Query-Cache werden Querys und deren Ergebnismengen gespeichert. Wenn das gleiche Statement mehrmals benutzt wird und die betroffenen Datensätze sich nicht verändert haben, wird das Ergebnis aus dem Cache geliefert.

Hinweis: Der Abfrage-Cache gibt keine veralteten Daten zurück. Wenn Tabellen modifiziert werden, werden alle entsprechenden Einträge im Abfrage-Cache synchronisiert.

MySQL Dokumentation

Viel Spaß noch beim Optimieren. Sie können uns gerne einmal Ihrere Erfahrungen über die Vor- oder Nachteile des Query-Caches schreiben. Auf Feedback sind wir immer neugierig.

Die PHP.ini – PHP gegen Angriffe absichern

Die wichtigsten Sicherheitseinstellungen in der php.ini

  • allow_url_fopen – Diese Einstellung legt fest, dass PHP-Skripte nur lokale Dateien des Servers einbinden können. Verbietet man dies, wird es einem Angreifer erschwert seinen Schadcode aus dem Internet nachzuladen. Manchmal benötigt man dies allerdings, etwa um NewsFeeds von externen Servern zu laden. Empfohlene Einstellung: OFF
  • allow_url_include – Ähnlich wie allow_url_fopen, allerdings betrifft diese Einstellung nicht das öffnen von Dateien, sondern das inkludieren (include(), require()) von Dateien.
    Empfohlene Einstellung: OFF (erst ab PHP 5.2.0 verfügbar!)
  • disable_functions – Hier kann man eine, durch Komma separierte, Liste mit PHP-Funktionen eintragen deren Benutzung gesperrt sein soll. Wenn man sie nicht unbedingt benötigt, sollten hier alle Funktionen eingetragen werden, die einen serverweiten Zugriff gestatten. Manche Funktionen, wie etwa exec(), sind vergleichbar mit einem Generalschlüssel für den Server.
    Empfohlene Einstellung: escapeshellcmd, exec, ini_restore, passthru, popen, proc_nice, proc_open, shell_exec, system
  • display_errors – Im produktiven Einsatz sollten PHP-Fehlermeldungen nicht angezeigt werden. Fehlermeldungen sind nicht nur lästig und hinterlassen einen unprofessionellen Eindruck beim Kunden sondern, und das ist viel wichtiger, geben Fehlermeldungen jedem Angreifer wichtige Informationen über die Struktur und den Aufbau unserer Scripts.
    Empfohlene Einstellung: OFF
  • open_basedir – Legt ein Verzeichnis fest, in dem wir mit PHP arbeiten können. Auf diese Art kann man verhindern, dass ein manipuliertes Script Zugriff auf gewisse Ordner oder ganze Bereiche auf unserem Server erhält.
    Empfohlene Einstellung: Root Verzeichnis der Internetpräsenz
  • register_globals – Ist diese Einstellung aktiv, werden Variablen aus GET und POST global verfügbar gemacht und überschreiben damit ggfs. andere Variablen mit dem selben Name. Ist diese Einstellung deaktiviert, muss auf Eingaben von aussen explizit mit $_GET, $_POST, $_SESSION zugegriffen werden. Empfohlene Einstellung: OFF

  • safe_mode – Ist der Safe_Mode aktiviert, werden u.a. Berechtigungs-Prüfungen durchgeführt, ob die gewünschte Aktion von einem User durchführbar ist. Empfohlene Einstellung: ON

Wie man ein hochverfügbares Apache Cluster aufsetzt

Mit dem Ultra Monkey Projekt kann man Load balanced und hochverfügbare Server-Anwendungen auf einem lokalen Area Netzwerk mit Open Source Komponenten auf dem Linux Betriebssystem erstellen.

http://www.linuxvirtualserver.org/docs/ha/ultramonkey.html

Das Ultra Monkey Paket stellt heartbeat und ldirectord bereit, den eigentlichen Load Balancer.

Um Ultra Monkey zu installieren empfehlen wir diese Anleitung
apache-cluster

In mittelständischen Unternehmen wird das Thema Ausfallsicherheit und Performanz häufig aufgrund der im Markt befindlichen hochpreisigen Load Balancer Lösungen untergeordnet zur Kenntnis genommen.
Gerade für hochverfügbare Server-Anwendungen wie das MyOOS Projekt ist es unerlässlich ein Instrument einzusetzen, das sich ausschliesslich darum kümmert, die eingehenden Anfragen intelligent zu verteilen und sicherzustellen, dass diese nicht ins Leere gehen.

Weitere Möglichkeit ist mod_proxy_balancer
mod_proxy_balancer
Apache mod_proxy balancing with PHP sticky sessions

Tags: ,

MyOOS unterstützt Google Gears

MyOOS unterstützt Google Gears, was neue Möglichkeiten für Ihren Browser ermöglicht.

Gears stellt Webapplikationen unter anderem die Position des Nutzers zur Verfügung, dient als Offlinespeicher und stellt eine SQL-Datenbank im Browser bereit, was zugleich Applikationen beschleunigen kann. Es richtet Desktopicons ein und kann komplexe JavaScript-Programme im Hintergrund ablaufen lassen, ohne den Browser zu blockieren. Künftig soll auch die Behandlung von Binärobjekten via JavaScript und der Upload mehrerer Dateien möglich sein. Denkbar ist zudem, neue und schnellere JavaScript-Engines in Gears zu integrieren. Auch soll man künftig aus einer Webapplikation Nachrichten an den Desktop senden können.

Lokaler Zwischenspeicher macht Applikationen schneller

Teil von Gears ist bereits von Anfang an das LocalServer API. Es stellt unter anderem den ResourceStore sowie den ManagedResourceStore zur Verfügung. Beide dienen als lokaler Speicher für Daten. Wird eine URL einem dieser lokalen Speicher zugewiesen, greift der Browser bei Anfragen auf die lokal gespeicherten Daten zu, was Applikationen gerade bei langsamen Internetverbindungen deutlich schneller reagieren lässt. Während der ResourceStore Daten nur auf explizite Anforderung aus dem Netz aktualisiert, hält der ManagedResourceStore Daten automatisch auf dem aktuellen Stand. Künftig soll Gears automatisch erkennen, wenn die Internetverbindung online und offline geht, um gegebenenfalls Daten zu aktualisieren, was gerade bei lückenhaften Mobilfunknetzen sehr praktisch sein kann.

JavaScript lernt Umgang mit Binärobjekten

Den Umgang mit Binärobjekten in JavaScript soll das Blob API ermöglichen. Ein Blob repräsentiert dabei einen beliebigen Block von Binärdaten, beispielsweise eine Bilddatei. Es handelt sich also eher um einen Verweis auf ein solches Binärobjekt, mit dessen Hilfe sich diese Daten an andere Gears-APIs übergeben lassen, beispielsweise das Canvas API zur Bildmanipulation. In Kombination mit der Funktion HttpRequest.send(blob) lassen sich zudem mehrere Dateien auf einen Schlag übertragen und auch der aktuelle Fortschritt des Uploads ausgeben. Eine Funktion, die viele bei größeren HTTP-Uploads schmerzlich vermissen.

Gear 0.4 steht ab sofort unter gears.google.com für Windows, Linux, MacOS X und Windows Mobile zum Download bereit. Als Browser werden derzeit Internet Explorer und Firefox unterstützt. Opera arbeitet zusammen mit Google an einer Gears-Unterstützung für seinen Browser, für Safari hat Google intern bereits eine lauffähige Version.

http://de.wikipedia.org/wiki/Google_Gears

http://gears.google.com

404 Fehlerseite

Wer kennt das nicht? Man ruft eine Web-Ressource auf – und vollkommen unerwartet findet man sich im Niemandsland des Web wieder.

404 – Not Found

Fehler der Art 404 müssen Sie auf jeden Fall auffangen, schließlich handelt es sich dabei um die am häufigsten auftretende Art von Fehler im Web. Vorbildlich ist die 404-Fehlerseite der Initiative Einfach für Alle der Aktion Mensch. Die Seite ist im Design der Website gehalten, schlägt einen sehr freundlichen Ton an und ist um konkrete Hilfestellung und Problemlösung bemüht.

Um stets auf dem Laufenden zu bleiben, welche 404er auf Ihrer Site auftreten, können Sie
sich bei jedem Aufruf der Fehlerseite eine automatisch generierte Mail zusenden lassen.

Die Konfiguration der Funktion ist denkbar einfach:

Tagen Sie in die Datei
~/shop/oos_debug.php

  define('SEND_404_ERROR', 'true');
  define('REPORTLEVEL_404', '1');
  define('WEBMASTER_NAME', 'Ihr Name');
  define('WEBMASTER_EMAIL_ADDRESS', 'ihre@mail.tld');

Mit false

  define('SEND_404_ERROR', 'false');

deaktivieren Sie die Benachtichtungen per Mail

  define('REPORTLEVEL_404', '1'); //

0 = Keine Benachrichtigungen
1 = Mail Benachrichtigungen nur bei fehlerhaften Links auf der eigenen Seite
2 = Sendet bei allen 404 Fehlern eine Mail

  define('WEBMASTER_NAME', 'Ihr Name');

Tragen Sie hier den Namen vom Empfänger ein.

  define('WEBMASTER_EMAIL_ADDRESS', 'ihre@mail.tld');

Die Mail Adresse vom Empfänger.

Gestaltung der Fehlerseite

Die Standardfehlerseite, wenn Sie keine eigenen Fehlerseiten definieren, geben kaum Hilfestellung, wie Nutzer an die gewünschten Informationen gelangen, und wirken aufgrund ihres reduzierten Designs wie ein Fremdkörper und nicht wie ein Teil Ihrer Website.

Google veröffentlich folgende Empfehlungen zur Gestaltung der Fehlerseite:

Hier finden Sie einige Vorschläge für das Erstellen einer effektiven 404-Seite, die auch dazu beitragen kann, dass Besucher auf Ihrer Website bleiben und sie dabei unterstützt, die gewünschten Informationen zu finden:

  • Erklären Sie Besuchern deutlich, dass die gewünschte Seite nicht gefunden werden kann. Verwenden Sie freundliche und einladende Formulierungen.
  • Stellen Sie sicher, dass Ihre 404-Seite dasselbe Design (einschließlich Navigation) wie der Rest Ihrer Website aufweist.
  • Fügen Sie Links zu Ihren meistgelesenen Artikeln oder Posts hinzu, sowie einen Link zur Startseite Ihrer Website.
  • Ziehen Sie in Erwägung, Nutzern die Möglichkeit zu geben, einen fehlerhaften Link zu melden.
  • Unabhängig davon, wie schön und nützlich Ihre benutzerdefinierte 404-Seite auch sein mag – Sie möchten wahrscheinlich nicht, dass sie in den Google-Suchergebnissen angezeigt wird. Um die Indizierung von 404-Seiten durch Google und anderen Suchmaschinen zu unterbinden, stellen Sie sicher, dass Ihr Webserver einen tatsächlichen 404-HTTP-Statuscode ausgibt, wenn eine nicht existierende Seite aufgerufen wird.

http://www.google.com/support/webmasters/

Links zur Seitmap

<?php echo '<a href ="' . oos_href_link($aModules['info'], $aFilename['info_sitemap']) . '">Sitemap</a>'; ?></a>

Links zum WebShop

<?php echo '<a href ="' . oos_href_link($aModules['main'], $aFilename['main']) . '">' . STORE_NAME . '</a>'; ?>

Link zu den meistgelesenen Artikeln

<?php echo '<a href ="' . oos_href_link($aModules['products'], $aFilename['product_info'], 'products_id=zahl') . '">Ihr Produkt</a>'; ?>

404-Seiten verbessern
Google stellt unter Webmatertools das 404-Widget zur Verfügung.

Sie können Ihrer benutzerdefinierten 404-Seite das 404-Widget von Google hinzufügen. Mithilfe des 404-Widgets erhalten Nutzer automatisch nützliche Vorschläge anstatt Fehlermeldungen.

  • Es wird ein Suchfeld für Ihre Website mit entsprechenden Suchvorschlägen hinzugefügt.
  • Es versucht, Alternativen für falsche URLs anzugeben
  • .

http://www.google.com/support/webmasters/

Google XML Sitemaps

Mit dem Google-Dienst “Sitemaps” können Webmaster die Suchmaschine über neue Websites oder Änderungen an Websites automatisch informieren. URLs, die Google in seinen Index aufnehmen sollen, werden in Form von Listen eingereicht, so dass der Suchmaschinenbetreiber diese schneller erfassen kann.

Google unterstützt das im Bibliotheken-Umfeld verbreitete Open Archives Initiative (OAI) Protocol for Metadata Harvesting (PMH) direkt und verarbeitet auch RSS-2.0- und Atom-0.3-Feeds unter Verwendung der Felder “link” und “lastMod”. Auch eine einfache Liste mit URLs wird akzeptiert.

Der MyOOS erstellt seit August 2005 für den Google Dienst die Sitemaps.

Google Sitemaps liefert Ihnen auch Informationen darüber wie Google Ihre Website interpretiert. Sie können beispielsweise Informationen zu Fehlern (z. B. wenn Googel Probleme hatte, einen Crawl auf Ihren Seiten durchzuführen) und Statistiken (z. B. ob und was Suchanfragen an Ihre Website in den Ergebnissen zurückgeben) aufrufen.

Wenn Sie auf die umfassenden Statistiken von Google zugreifen möchten, müssen Sie sich als Inhaber der Website überprüfen lassen.

Google bietet Ihnen zwei Überprüfungsmethoden an. Sie können entweder eine HTML-Datei mit einem von Google angegebenen Namen hochladen, oder in die Indexdatei Ihrer Website einen META-Tag einfügen.

<META name="verify-v1" content="< hier steht ihre id >" />

Den META-Tag tragen Sie einfach in Ihr Template
~/oos_temp/templates/skin/theme.html
ein.

Für das Shopsystem MyOOS ist die HTML-Datei Lösung einfacher.

Wir verwenden Google Sitemaps, um die Crawler von Google über alle Ihre Seiten zu informieren und den Nutzern zu helfen, mehr von Ihren Webseiten zu entdecken.

Für die automatische Erstellung löschen Sie die Dateien

“sitemapcategories.xml”
“sitemapindex.xml”
“sitemapproducts.xml”

Im Verzeichnis ~/shop

Rufen Sie das Skript nun in Ihrem Browser auf
http://www.ihre_seite.tld/


Generated Google Product Sitemap Successfully

Generated Google Category Sitemap Successfully

Generated Google Sitemap Index Successfully

CONGRATULATIONS! All files generated successfully.

If you have not already submitted the sitemap index to Google click the link below.
Before you do I HIGHLY recommend that you view the XML files to make sure the data is correct.

http://www.google.com/webmasters/sitemaps/ping?sitemap=http%3A%2F%2Fwww.ihre seite.tld%2Fsitemapindex.xml

Here is your sitemap index: http://www.ihre seite /sitemapindex.xml
Here is your product sitemap: http://www.ihre seite /sitemapproducts.xml
Here is your category sitemap: http://www.ihre seite /sitemapcategories.xml

Mit Cronjob.de können Sie kostenlos zeitgesteuert Skripte von Ihrem Webserver aufrufen lassen – auch bzw. gerade dann, wenn Ihnen Ihr Provider keine sogenannten Cronjobs zur Verfügung stellt.

Folgende Dienste können über Änderungen benachrichtig werden.

      Google
  • Keine Registrierung erforderlich, aber Sie können sich bei den Google Webmaster Tools anmelden um Indexierungs-Statistiken zu Ihrem Webshop zu sehen.
    1. MSN Live Search
  • Keine Registrierung erforderlich, aber Sie können sich bei den MSN Live Webmaster Tools anmelden um Indexierungs-Statistiken zu Ihrem Webshop zu sehen.
    1. Ask.com
  • Keine Registrierung erforderlich
    1. YAHOO
  • eine Registrierung erforderlich Web Services by Yahoo!

Die URL Ihrer Sitemap können Sie in die Datei robots.txt im Webshop-Verzeichnis eintragen
Mehr Infos

MySQL Performance Monitoring mit AdoDB

Nützliches Utility im ADOdb Layer

http://phplens.com/lens/adodb/docs-perf.htm

Grundsätzlich “merkt” man Performance Probleme erst dann, wenn der Server sehr deutlich langsamer wird – allerdings kann man zu diesem Zeitpunkt nur raten, was denn nun die begrenzte Resource ist.

Im MyOOS stehen Ihnen umfassende Monitoring- und Diagnosefunktionen zur Verfügung.

Um harte Fakten zu bekommen (beziehungsweise permanent zu überwachen, bevor es zu Problemen kommt), sollte man sich des Performance Monitors bedienen:

~/shop/includes/

define('OOS_LOG_SQL', 'true');    // OOS Performance Monitor

Für die kurzfristige permanente Überwachung kann man die Ausgabe deaktiven in

~/shop/includes/oos_nice_exit.php

  if (OOS_LOG_SQL == 'true') {
    $dbconn->LogSQL(false); // turn off logging
    // output summary of SQL logging results
/*
    $perf = NewPerfMonitor($dbconn);
    echo $perf->SuspiciousSQL();
    echo $perf->ExpensiveSQL();
    echo $perf->InvalidSQL();
*/
  }

Über folgendes einfache Skipt

  define('OOS_VALID_MOD', 'yes');
  require_once(dirname(__FILE__) . '/includes/oos_main.php');
 
  $perf = NewPerfMonitor($dbconn);
  echo $perf->UI();

starten Sie den Monitor.