Das Örtchen RSS-Feed
Kategorie
Kategorie: Blog
Buttons & Statistiken
Neueste Kommentare

Drupal: Drupal 7, InnoDB und die Oberflächenübersetzung

Am Wochenanfang bin ich von einem veralteten XAMPP auf Zend Server umgestiegen, womit meine lokale Entwicklungsumgebung nun PHP 5.3 bietet. Gestern wollte ich dann die Chance nutzen und Drupal 7 (benötigt mindestens PHP 5.2.5) erstmalig testen. Da dieser Test eine Vorbereitung für ein Kunden-Projekt sein soll, wollte ich auch direkt die deutsche Oberflächenübersetzung nutzen. Leider brach der Installer immer genau beim Import dieser Übersetzungen zusammen. Hierbei spielte es auch keine Rolle, ob ich das englische Drupal mit extra deutscher Sprachdatei oder die fertige Fassung von Drupalcenter versuchte.

Das Problem

Nach einer längeren Wartezeit erschien bei den meisten Versuchen nachfolgende Fehlermeldung:

"An AJAX HTTP error occurred. HTTP Result Code: 200 Debugging information follows. (...) StatusText: OK ResponseText: 200 OK OK The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later."

Die Recherche

Nach etwas Recherche fand ich eine ähnliche Fehlermeldung, die jedoch um einiges eindeutiger war und ebenfalls in einer lokalen Entwicklunsumgebung auftrat. Hierbei wurde wegen eines Überschreitens der maximalen Ausführungszeit eines PHP-Skriptes ("Maximum execution time of 60 seconds exceeded") die Erhöhung nachfolgender Einstellungen in der php.ini (welche beim Zend Server per Webinterface angepasst wird) empfohlen:

  max_execution_time = 600 

 max_input_time = 600 

 mysql.connect_timeout = 600 

Da mein Arbeitsnotebook schon etwas in die Jahre gekommen und somit schwach auf der Brust ist, gehört die Erhöhung des maximalen Ausführungszeit sowieso immer zu einer meiner ersten Aktionen. Leider brachte auch die Anpassung der beiden anderen Werte keine Besserung. Ich werde sie jedoch so belassen, um zukünftigen Problemen vorzubeugen.

Die Lösung

Bei meiner weiteren Recherche fand ich ein Issue des Drupal Cores für Timeouts beim Import der Übersetzungen mit nachfolgender Meldung:

"An AJAX HTTP error occurred. HTTP Result Code: 504 Debugging information follows. (...) StatusText: Gateway Time-out ResponseText: The page is temporarily unavailable (...) The page you are looking for is temporarily unavailable. Please try again later."

Die Kommentare brachten mich dann auch auf den richtigen Trichter. Seit Drupal 7 wird InnoDB für die meisten Tabellen als Standard verwendet. Lediglich wenn dieses nicht verfügbar ist, wird stattdessen wie früher MyISAM verwendet. Da InnoDB im Zend Server schon standardmäßig aktiv ist (und nicht wie bei XAMPP aktiviert werden muss), hat Drupal 7 bei der Installation korrekterweise InnoDB-Tabellen angelegt.

Leider ist die Kombination von schwachem Rechner, InnoDB-Tabellen, massig INSERTs und der normalen InnoDB-Konfiguration von Zend Server ziemlich unglücklich. Da ich bei einer lokalen Entwicklungsumgebung jedoch als einziger auf den Apache zugreife, konnte ich problemlos die empfohlene Anpassung an der MySQL-Konfiguration vornehmen.

C:\Zend\MySQL51\my.ini

alt:

 innodb_flush_log_at_trx_commit=1 

neu:

 innodb_flush_log_at_trx_commit=2 

Fazit

Die Lösung ist eigentlich ziemlich simpel, ich wäre jedoch anhand der Fehlermeldung niemals darauf gekommen. Da dieses Problem nicht nur auf lokale Umgebungen beschränkt ist, sondern auch bei Wald-und-Wiesen-Hostern mit schwachen Servern auftreten dürfte, ist auf eine Änderung des Importverhaltens zu hoffen, wie sie in einem weiteren Issue angedeutet wird. Ich glaube jedoch nicht, daß wir diese noch mit Drupal 7 erleben werden oder was meint ihr?

Hallo! Bist du neu hier? Dann abonniere doch den RSS-Feed dieses nicht mehr ganz so stillen Örtchens, um über meine geistigen Ergüsse auf dem Laufenden zu bleiben. Alternativ besteht auch die Möglichkeit, sich von FeedBurner per E-Mail über meine Ausscheidungen benachrichtigen zu lassen.

Neuen Kommentar schreiben

Der Inhalt dieses Feldes wird nicht öffentlich zugänglich angezeigt.
Der Inhalt dieses Feldes wird öffentlich zugänglich angezeigt, aber als rel="nofollow" markiert.
Hinweis

Kommentare beleben den Blog! Ich freue mich über jeden Kommentar. Du kannst hier offen Deine Meinung zum Artikel sagen, aber bitte beachte die Netiquette und vermeide es andere zu beleidigen.

Bitte unterlasst es die Kommentare zu SEO-Zwecken zu missbrauchen. Kommentare mit Links, die nicht zu Blogs führen (oder zu Blogs mit Grauzonen-Themen) und/oder Keywords als Namen verwenden, sind nicht erwünscht!

Möchtest Du mir einen Blog-Artikel schmackhaft machen, dann schreib die URL ohne HTML-Tag in den Kommentarbereich und ich werde diesen bei Gefallen verlinken.