Domain- und Pfad-Abhängigkeiten vermeiden
Manchmal frage ich mich schon, warum manche Webentwickler es sich (und anderen) so schwer machen...
Wenn man eine Webapplikation erstellt, dann macht man das ja (hoffentlich!) auf einer Testplattform, also meist unter einer Test-Subdomain. Wenn auf der Testplattform dann alles funktioniert, fertig und getestet ist, geht der ganze Kram unter der richtigen Domain live. Alles ganz einfach, sollte man denken... ABER: Immer wieder wird an diversen (meist völlig unnötigen!) Stellen die Domain unter der die Applikation gerade läuft, hart rein kodiert, was dazu führt, daß man an genau diesen Stellen noch mal hinfassen muss damit die tolle Applikation auch unter einer anderen Domain läuft. Meist muss es dann aber irgendwann ganz schnell gehen, der Mensch der sich damit auskennt ist krank, hat Urlaub oder ist vom Bus überfahren worden, was dazu führt, dass es beim Switch auf eine andere Domain kracht, weil eben "irgendwo" noch die Test-Domain drin steht. Beliebte Stellen für so was sind: - include Pfade - <base> Tags in HTML-Headern - Configs für dynamisch erzeugte URLs Hatte hier eben wieder mal ein schönes Beispiel dafür wie man es nicht machen sollte. Kunde hat sich von einer Webagentur seine Seiten neu machen lassen. Es gibt 4 Domains die auf die Seiten zeigen sollen, .de als Hauptdomain, .com für die englischen Inhalte und 2 weitere Domains mit Varianten der Schreibweise. Für die Entwicklung der neuen Seiten haben wir einen weiteren virt. Server unter einer dev. Subdomain eingerichtet. Wenn die neuen Seiten fertig sind, soll nur noch der DNS umgestellt werden, die Apache-Config im dev. virt. Server war schon für die 4 "richtigen" www. Domains vorbereitet. Jetzt sind die neuen Seiten fertig und es soll umgestellt werden. Weil heute ein "SuperWichtigEvent" ist, bei dem die neuen Seiten vorgestellt werden sollen, muss es natürlich wieder mal ganz schnell gehen. Kein Problem denkt man sich, DNS umstellen und gut ist... Falsch, gar nix ist gut. Da die App bisher nur unter der dev. Subdomain funktioniert, bekommt man unter allen 4 Domains nur das (eh schon fragwürdige) FlashIntro zu sehen. Dann ist Schluss, kein "skip" oder "weiter" Link, einfach nichts. Also kurzerhand für die 4 www. Domains Redirects auf die dev. Subdomain eingerichtet. Ist zwar nicht schön, funktioniert aber erst mal, wir erinnern uns: Heute ist der "SuperWichtigEvent", es muss also auf jeden Fall "irgendwie" laufen. Mail an die Webagentur, sie mögen das doch bitte fixen und uns dann Bescheid geben, wann und wie wir welche Domain auf die Seiten zeigen lassen sollen (ServerAlias, Redirect,...) Prompte Antwort: "Jetzt tut es, wir mussten nur noch $wasauchimmer umstellen. Bitte Redirects rausnehmen und alle 4 Domains als Alias einrichten. Die App entscheidet dann intern was für welche Domain angezeigt wird" Kein Problem, also wieder umgestellt. Ergebnis: Die .de Hauptdomain funktioniert jetzt immerhin, bei der .com gibt es immer noch nur das FlashIntro, das jetzt aber schon mal mit "weiter" Link. Wenn man auf den klickt wird aber nur noch mal das Intro abgespielt. Bei den beiden anderen Domains bekommt man jetzt nur noch eine Fehlerseite angezeigt, die einem sagt, dass die App mit den Domains mal so gar nix anfangen kann... Mail an die Agentur da sei wohl immer noch was nicht ganz korrekt... Wieder die schnelle Antwort: " Jetzt aber, wir mussten noch....." Nunja, ich weiss ja nicht was die getestet haben, bei mir funktioniert es immer noch nicht unter allen 4 Domains, aber wer bin ich schon. Und solange man mir nicht sagt was genau gewünscht ist, kann ich auch nicht mehr weiter helfen... Liebe Webentwickler: Das muss nicht sein! Es gibt ENV-Vars in denen aktuelle Pfade, ServerName, usw. stehen. Diese muss man aber eben auch (sinnvoll) verwenden damit die tolle Webapplikation auf verschiedenen Systemen unter verschiedenen Domains läuft OHNE dass man irgendwo hinfassen muss. Wenn man Redirects haben will, dann kann man die ganz einfach in der Websever-Config einrichten, daß muss man nicht mit wilden if/else Konstrukten hart kodiert in der App machen. Für verschiedene Sprachen bieten sich z.B. Prefixe in der URL an (/de/, /en/,...). Auf die kann man dann ganz einfache Redirects einrichten. Und wenn die App anhand der Domain verschiedene Inhalte anzeigen soll, sollte man zumindest immer einen Fallback drin haben, damit wenigstens "irgendwas" angezeigt wird. Den Grundsatz "Abhängigkeiten vermeiden" sollte man eben immer, nicht nur bei super-cooler OOP (Stichwort Dependency Injection) im Kopf haben...
Autor: Jens Giessmann
in Webdev
am
Mittwoch, 17. Februar 2010
um
10:33
Kommentare (0) | Trackbacks (0) Vortrag "einfach != einfach" online
Der Vortrag "einfach != einfach" von mir zum Thema "Mach's so einfach wie möglich!" beim Treffen der PHPUG Stuttgart am 13.01.2010 ist online.
(Navigieren in den slides geht mit Space,Pfeilen usw.)
Autor: Jens Giessmann
in PHPUG
am
Donnerstag, 14. Januar 2010
um
19:46
Kommentare (0) | Trackbacks (0) Tags für diesen Artikel: blog, optimierung, performance, php, phpug, programming, refactoring, skalierbarkeit, testen, treffen, tuning, vortrag
PHP 5.3.0 Released
Es ist da! Seit heute gibt es offiziell PHP 5.3.0!
The PHP development team is proud to announce the immediate release of PHP 5.3.0. This release is a major improvement in the 5.X series, which includes a large number of new features and bug fixes. Herzlichen Glückwunsch und vielen Dank für ein weiteres, besseres PHP! Weitere Infos zu den neuen Features finden sich in dem PHP 5.3.0 Release Announcement, im PHP 5 ChangeLog und dem migration guide. PHP 5.3.0beta1 ist da
Nach weiteren Diskussionen vor allem zu OO features und closures, sind diese erst mal zurückgestellt worden (siehe das RFC dazu), um die Fertigstellung von PHP 5.3 nicht weiter zu verzögern.
Mit der Veröffentlichung von PHP 5.3.0beta1 durch Johannes Schlüters ist 5.3.0 damit im feature freeze Status angekommen. Die Liste der neuen Features, Verbesserungen und Bugfixes ist ja auch wirklich lang genug! Man schaue sich nur mal das ChangeLog File Stand 5.3.0beta1 im CVS an! Für uns PHPUser heisst es spätestens jetzt, schauen was es neues gibt (und da gibt's viel), wie das implementiert wurde, was es für Probleme beim Update geben kann, etc. Eben: testen, testen, testen! PHP 5.3 kommt... später
Bis zum Release von PHP 5.3 wird's wohl doch noch mal etwas länger dauern als vor ein paar Monaten (auch schon wieder Monate her...) angenommen.
Laut einer Mail auf der internals Liste von Lukas Kahwe Smith, einem der beiden RMs für PHP 5.3, scheint selbst Q1 2009 inzwischen optimistisch zu sein. Schade, aber immerhin sollen laut dieser Mail namespaces (endlich!) soweit fertig sein. The good news, namespace changes are now finished ahead of alpha3. Dann kann man ja immerhin mal anfangen Libs damit zu schreiben und zu testen wie/was damit so geht.
(Seite 1 von 2, insgesamt 7 Einträge)
» nächste Seite
|
blog powered by Serendipity