Aktuelle Nachrichten online

Neue Nachrichten  
Top 100 News  

Auto

379

Computer

3542

Nachrichten

8643

Politik

594

Sport

9454

Foren

28























Counter kostenlose counter Besucherz�ler Counter

Date_Holidays Driver isHoliday höllisch langsam

Hi, danke für's Interesse. Ich habe profiled und herausgefunden, dass in Driver.php bei isHoliday - abgesehen von anderen Änderungen - 2 zusätzliche Funktionsaufrufe von $this->setYear() hinzugekommen sind: Aktuelle Version: function isHoliday($date, $filter = null) { if (! is_a($date, 'Date')) { $date = $this->_convertDate($date); if (Date_Holidays::isError($date)) { return $date; } } //rebuild internal array of holidays if required. $compare_year = $date->getYear(); $this_year = $this->getYear(); if ($this_year !== $compare_year) { $this->setYear($compare_year); } if (is_null($filter)) { $filter = new Date_Holidays_Filter_Blacklist(array()); } elseif (is_array($filter)) { $filter = new Date_Holidays_Filter_Whitelist($filter); } foreach (array_keys($this->_dates) as $internalName) { if ($filter->accept($internalName)) { if (Date_Holidays_Driver::dateSloppyCompare($date, $this->_dates[$internalName]) != 0) { continue; } $this->setYear($this_year); return true; } } $this->setYear($this_year); return false; } Version 0.17.4: (in der nächsten ist es bereits geändert) function isHoliday($date, $filter = null) { if (! is_a($date, 'Date')) { $date = $this->_convertDate($date); if (Date_Holidays::isError($date)) { return $date; } } //rebuild internal array of holidays if required. $compare_year = $date->getYear(); if ($this->getYear() !== $compare_year) { $this->setYear($compare_year); } if (is_null($filter)) { $filter = new Date_Holidays_Filter_Blacklist(array()); } elseif (is_array($filter)) { $filter = new Date_Holidays_Filter_Whitelist($filter); } foreach (array_keys($this->_dates) as $internalName) { if ($filter->accept($internalName)) { if (Date_Holidays_Driver::dateSloppyCompare($date, $this->_dates[$internalName]) != 0) { continue; } return true; } } return false; } Dieser Funktionsaufruf ist sehr teuer. Er ist die direkte Ursache für mein Problem. Wenn man so wie ich einen Kalender für das ganze Jahr anzeigen lässt, wird es sehr langsam (18 Sekunden!), wenn für jeden Tag abgeprüft weden muss, ob er vielleicht ein Feiertag ist. Dies betrifft dann auch z.B. die Zählung der Dauer eines Ereignisses, bei dem Feiertage nicht mitgezählt werden dürfen (z.B. Urlaube). Die Frage ist, WARUM hier setYear nochmal mit dem zwischengespeicherten aktuellen Jahr des Drivers gespeichert werden muss, wo doch darauf eigentlich keine Änderung durchgeführt wird. Greetings René
weiterlesen...

Quelle: Pear Forum


Weitere Artikel:

Sequences and auto-incrementing
Hallo, Versuche mich gerade ine bischen schlau zu machen mit die Sequences und auto-incrementing ... Lesen

Prog gesucht
Für eine Musikseite wird jemand in Hannover oder Umgebung (Treffen erforderlich) gesucht, der ... Lesen

Mail senden
Ha, habe die fehlenden File nachinstalliert. Zumindest kommt die Fehler-Meldung nicht mehr. Denke ... Lesen

QuickForm - setSelected geht nicht bei array
Grundsätzlich ist $form->setDefaults(...); allen Aufrufen wie setSelected(), setValue() ... Lesen

cryptType bei AES_ENCRYPT?
Hallo mal wieder :), (sorry, hatte ich vergessen) ein Modul meines Projektes verwendet die Klasse ... Lesen

fehler E200 bei DB_NestedSet und MySQL
Hallo Leute, da ich mich mit pear noch nicht viel auseinader gesetzt hab und bis jetzt ohne diese ... Lesen

Mail with SMTP
Bitte mal die Forumssuche bemühen - dieses Thema hatten wir schon oft genug. Wenn du damit ... Lesen

Sortierung - Filter
Hallo *, vielleicht kann mir jemand von euch weiterhelfen, leider hab ich keine geeignete ... Lesen


Servicebox

für den Artikel "Date_Holidays Driver isHoliday höllisch langsam"

Nachricht melden

Nachricht falsch

Sonstige Einwände


Nachrichten, News und Infos aus aller Welt - Topaktuell zusammengefasst

0.08241 | 05.09.2010 | 22640 | Impressum