CodeIgniter hat eine “Database Caching”-Klasse, aber die habe ich auf die Schnelle nicht verstanden – und es musste schnell gehen 🙂
CodeIgniter hat auch einen generischen Cache, und der ist schnell verstanden. Zu beachten: Datenbank-Queries sind nicht cachebar, “nur” deren Result-Sets. Das sieht dann bsplw. so aus (hier als filebasierter Cache):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// geht nicht via autoload:
$this->load->driver('cache');
// ...
publicfunctionfoo()
{
$queryResult=$this->cache->file->get('bar');
if($queryResult==FALSE)
{
$query=$this->db->query('SELECT * FROM mytable;');
Für schnelleres Austauschen des Caching-Mechanismus scheint sich das Folgende anzubieten – allerdings gibt es einen Bug: Wenn der Adapter (im Beispiel unten APC) nicht verfügbar ist, wird nicht der Fallback genommen m(
// statt $this->cache->file->* nur $this->cache->*
$this->cache->save('foo',$foo,300);// 5 Min
$this->cache->get('foo');
Deshalb: Entweder vorher checken, welche Treiber installiert sind – oder bei filebasiertem Caching bleiben, das scheint das zuverlässigste.
Unabhängig davon ist diese Methode der Treiberwahl natürlich insbesondere dann am flexibelsten, wenn ein Treiber nicht (mehr) verfügbar ist, und der erwähnte Bug zuschlägt.
UPDATE:
Es kann eine gute Idee sein, die Erstellung des Caches in einen eigenen Controller auszulagern. Auf die Art vermeidet man, dass die Anwendung für denjenigen hängt, der das Pech hatte, auf eine veraltete Cache-Datei zugreifen zu wollen.
Ich habe in der App die oben beschriebene Logik implementiert, allerdings mit einer TTL von 15 Min. Parallel rufe ich per Cron alle 10 Min den Controller auf (mit “-m 540”, also max 9 Min Laufzeit), der die Cache-Dateien erstellt – wobei ich in meinem Fall davon ausgehe, dass das Erstellen etwa 5 Minuten max dauert.
So findet die Anwendung immer aus Ihrer Sicht aktuelle (weil < 15 Min alt) Cache-Dateien vor, fällt aber gleichzeitig nicht um, wenn der Cron mal ausfällt.
Wer seinen Emailaccount umzieht und nicht aufpasst, hat vielleicht bald dasselbe Problem wie ich es neulich hatte: Einzelne Mails sind doppelt auf dem neuen Server gelandet. Dumm, dass Apple Mail doppelte Mails ausblendet; das macht das Aufräumen so schwierig. Gut dagegen, dass es Michael Tsai gibt, der hat nämlich die Lösung:
Das hat die ganze Zeit funktioniert – jetzt bekomme ich
Message: Undefined index: REMOTE_ADDR
So weit, so klar: Eine Remote-IP habe ich nur, wenn der Aufruf auch von Remote kommt. Jetzt könnte man auf PHP schimpfen, warum der Index nicht trotzdem da ist, bsplw. mit 0.0.0.0, dem leeren String oder meinetwegen NULL gefüllt. Aber viel interessanter finde ich die Frage, warum das plötzlich nicht mehr geht. Wenn man sich den Controller oben ansieht, dann wird das erst mal nicht klar: Die IP wird nicht direkt abgefragt – klar, sonst hätte es auch nicht so lange funktioniert. Es wird aber auch keine Custom Klasse verwendet. Nicht mal indirekt, wie sich herausstellt, denn:
Die Session-Library ist der Übeltäter, die hatte ich vor Kurzem in die Autoload getan. Nun möchte ich an der Framework-Klasse CI_Session nicht herumdoktern, deshalb sieht mein aktueller Hack in der autoload.php so aus:
Aktuell bin ich (noch) bei GMX, und das auch eigentlich schon seit immer. Parallel hatte ich mal was mit web.de, aber das war nix (zu kleines Postfach, zu kleine Dateianhänge, alles blöd). Ein ungenutztes Gmail-Konto habe ich auch noch, aber das ist noch weniger was. Bei GMX bin ich sogar zahlender Kunde, und habe dafür z.B. IMAP, mehr Platz, keine Werbung.
Allerdings haben die™ vor einem halben Jahr das UI umgebaut, jetzt funktioniert zwar nichts mehr, dafür ist alles total fancy. Hier eine Auswahl, grob nach Unfassbarkeit sortiert:
Externe Bilder werden automatisch geladen. Das kann man auch nicht abschalten. Und der Mann vom Support hält das auch nicht für ein Problem. Inzwischen wurde die Funktion stillschweigend nachgerüstet: Einstellungen -> Sicherheit -> Externe Inhalte
Die Suche arbeitet nicht mehr auf dem Body, nur noch auf den Mail-Headern. 5GB Mails, und man kann nicht den Mailtext durchsuchen, wie “praktisch” m(
Der Blacklist können keine TLDs mehr hinzugefügt werden. Ich bekomme aus *.ru aber nur SPAM und würde das deshalb gerne blocken. PS: Diese Einschränkung ist völlig willkürlich, denn bereits vorhandene TLDs von vor der Umstellung sind noch da.
Die Blacklist liegt auch nicht mehr als Plain Text vor und ist somit nicht mehr übertragbar. Macht ja gerade bei Spam-Abwehr auch überhaupt keinen Sinn, auf vorhandene Listen zurückgreifen zu können.
Der Grund, weshalb eine Mail als SPAM klassifiziert wurde (Blacklist, Filterregel, GMX-Analyse, …) wird nicht mehr angezeigt, man kann Fehler also nicht mehr korrigieren. Das gilt nur für den Webmailer, in der “Spam-Report” Mail steht das noch drin – die bekommt man aber nur bei POP m(
Der Posteingang kann nicht mehr als Startseite konfiguriert werden, Einstellungen für die Ansicht (Vorschau unten, Vorschau rechts, keine Vorschau) werden nicht mehr gespeichert. Dabei ist das Deaktiveren der Vorschau laut Support die “Lösung” für das Problem automatisch nachgeladener Grafiken, so viel dazu.
Ich kann Mails nicht mehr nach “Gesendet” verschieben, und ich kann auf gesendete Mails (nach wie vor) nicht antworten. Das beißt sich, denn um auf gesendete Mails antworten zu können, verschob ich sie in den Posteingang. Wo sie jetzt bleiben müssten, zumindest bei Benutzung des Webmailers, denn natürlich geht das mit einem Mailprogramm immer noch.
Empfänger werden nicht mehr als Plain Text, sondern als “Button” dargestellt. Das macht es schwer unmöglich, “empfänger (at) domain.tld” zu pasten, und dann in “empfänger@domain.tld” zu ändern
Alles ist buggy: Diese Popups, Tooltips, … liegen grundsätzlich im Weg und schließen sich auch durchaus nicht immer. Der Counter der ungelesenen Mails ist oft falsch. Manchmal springt man beim Schließen einer Mail aus einem Ordner zurück in den Posteingang. Wenn man auf “3 neue Nachrichten im Ordner Spamverdacht” klickt, landet man im Posteingang, …
Alles ist unergonomisch: In der Ansicht “Posteingang” ist der Button “Antworten” dort, wo in der Ansicht “Mail schreiben” der Button “Weiterleiten” ist. Sprich: Wenn man die Mail öffnet, und schon mal den Finger zu “Antworten” bewegt, wird man den falschen Knopf drücken. Oder: “Logout” reagiert auf MouseDown statt auf MouseUp. Folge: Wenn man den Button klickt, kann man den Logout nicht mehr vermeiden, auch nicht, wenn man die Maus vor Loslassen der Taste vom Button wegbewegt. Dies ist anders als bei 90% der Buttons/Links im Internet
Der absolute Knaller ist aber die Kampagne gegen AdBlock. Das grenzt ja schon an Irreführung.
Sprich: Ich bin unzufrieden 🙂 Da traf es sich, dass Tim neulich seine neue Emailadresse rumschicke, er sei jetzt bei Posteo. Etwa gleichzeitig kam die c’t 4/14 raus, mit einem Test von Emailanbietern, Posteo auch dort ganz vorne mit dabei. Jeweils genannt wurden primär:
Die Server stehen in Deutschland
Das Verschlüsselungsniveau spielt aktuell ganz vorne mit
Die Server werden mit grünem Strom betrieben, das verdiente Geld wird bei der GLS oder der Umweltbank angelegt
Man kann anonym bleiben; die Bezahlung erfolgt zB per Barbrief (man kann aber auch überweisen, klar)
Aus meiner Sicht, nach inzwischen etwa vier Wochen Nutzung kommen dazu:
Der Nutzer ist Kunde, nicht die Werbeindustrie. Heißt: Es gibt keine werbefinanzierten Konten wie bei GMX. Damit liegt es im aktiven Interesse Posteos, mir zu gefallen.
Die Oberfläche (zum Einsatz kommt Roundcube) ist extrem aufgeräumt
Es gibt neben der Mailfunktion auch einen Kalender (mit CalDAV, klar) und ein Adressbuch (mit CardDAV, klar)
Es ist günstiger als GMX 😉
Es ist mächtiger, so kann man bsplw. Reguläre Ausdrücke für Filter nutzen <3 und Unterordner anlegen, wo man möchte – auch im Posteingang oder im Gesendet-Ordner
Apropos Gesendet-Ordner: Man kann die Standard-Ordner ummappen. Das ist gut, wenn bsplw. der Mail-Client auf dem Handy darauf besteht, seine eigenen Ordner anzulegen. Dann nimmt man den halt auch im Webmailer, und löscht den ursprünglich verwendeten.
Die Suche geht natürlich über alle Felder – allerdings nur im aktuellen Ordner. Das ist eine Einschränkung, selbst bei recht strukturierter Nutzung von Ordnern.
Eingebettete Medien werden auf Wunsch natürlich nicht nachgeladen
Ein gewöhnungsbedürftiger Unterschied, und der ist auch nach vier Wochen noch gewöhnungsbedürftig: Es gibt keinen Spam-Ordner. Das ist eine bewusste Entscheidung (FAQs unter “Gibt es einen Spamordner?”), um das Problem “Oh, ist vielleicht im Spam-Ordner gelandet” zu vermeiden. Aber es bedeutet auch, dass Mails, die nicht als Spam erkannt werden, stattdessen im Posteingang landen. Ich bin noch unentschlossen, was ich davon halten soll… meist funktioniert das gut, aber z.B. seit gestern morgen habe ich etwa 150 (sic!) Mails an fiktive Adressen @crusy.net erhalten, die praktisch alle im Posteingang aufgelaufen sind. Als Spam wurden sie laut Aussage des Supports nicht erkannt, weil sie durch den Zwischenschritt über Uberspace (dem Hoster von crusy.net) “reingewaschen” worden seien. Klar, Abhilfe schaffte das Abschalten meines Catch-all. Aber beim Thema “Verwendung einer eigenen Domain” empfiehlt Posteo selbst aktiv die Weiterleitung an’s Postfach (FAQs unter “Kann ich Posteo mit eigenen Domains verwenden?”). Sich bei Spam-Problemen dann hinterher darauf zurückzuziehen, dass man durch die eigene Domain ja den Absenderserver verschleiere, ist doch etwas einfach.
Update für @ahemwe: Das Problem besteht noch wie beschrieben – kommt die Mail über einen Host, der selber kein bekannter SPAM-Server ist (hier: uberspace), wird die Mail nicht (gut) als SPAM erkannt. Mein Workaround: Per SpamAssassin prüfe ich auf uberspace eingehende Mails, bevor ich sie weiterleite. Überschreitet der vom SpamAssassin erkannte “SPAM-Score” einen definierten Wert, setze ich einen Header:
1
2
3
4
5
6
7
#### Filterung dann via X-Spam-Score bei Posteo:
if(/^X-Spam-Level:\*{$MAXSPAMSCORE,}$/){
xfilter"reformail -a'X-Uberspam: yes'"
}
else{
xfilter"reformail -a'X-Uberspam: no'"
}
Den werte ich bei Posteo aus (hier auch noch mal mit Auswertung des SPAM-Scores):
Anyway: Bis auf Weiteres bleibe ich wohl hier, die 3er-Kombination aus schlichter Oberfläche, vergleichsweise mächtigen Funktionen, bei gleichzeitig nicht selbsgehosteter Software überzeugen – zumindest im Vergleich zu GMX.
lolwut: Die Beatles haben sich nie aufgelöst, John und George leben noch – in einer parallelen Dimension 😀 Den kannte ich noch nicht, wtffunfact.com allerdings schon. Anyways, hear hier die Songs auf Youtube: