oakdesign Posted September 5, 2008 Report Share Posted September 5, 2008 Hallo zusammen, ich entwickle für einen Kunden ein Webportal indem unter anderem xtc als Shopsoftware eingesetzt wird. Die Architektur Windows 2003 Server R2, Apache2.2.x, php5.2.x als mod_php Innerhalb dieser Konfiguration ist allerdings die Datumsanzeige die über function xtc_date_long( ) erzeugt wird nicht nutzbar. Da die Direktive setlocale,die in den lang.php Dateien gesetzt wird, nicht für den Thread in dem das Skript läuft sondern für den gesamten Prozess (indem mehrere Threads laufen)wirkt, kann und kommt es vor, dass das Datumsformat einer anderen Sprache (also z.B. Sprache Deutsch ausgewählt, aber Wochentag und Monatsname in Englisch) ausgegeben wird. Nach bisherigen Tests kommt das in bis zu 30% Aufrufe von xtc_date_long vor. Dieses Phänomen ist auch so in der PHP Doku beschrieben. Warnung Die Locale-Informationen wirken auf den Prozess, nicht auf den Thread. Sofern Sie PHP mit einer Multithreaded Server API wie IIS oder Apache unter Windows einsetzen, rechnen Sie mit unerwarteten Änderungen der Locale-Einstellungen zur Laufzeit des Skripts, auch wenn das Skript selbst keinen setlocale()-Aufruf durchführt. Dies passiert, da andere Skripte in verschiedenen Threads des selben Prozesses zur selben Zeit prozessweit die Locale-Einstellungen mittels setlocale() ändern. Da eine Änderung der Systemarchitektur nicht in Frage kommt (Apache with prefork oder php als cgi) bleibt wohl (bis php6 dann soll setlocale auch in multithreaded umgebungen laufen) erst mal keine andere Lösung als Datumsanzeigen mit Wochentag und Monatsnamen per Skript abhängig von der $_SESSION['language'] zusammen zusetzen. Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.