18.10.2010
von Daniel
Kommentare deaktiviert

Speicherproblem bei sehr großen InnoDB-Tabellen

Heute hatte ich das Problem, dass ich verschiedene Aktionen auf einer InnoDB-Tabelle nicht ausführen konnte, weil die zugewiesende Buffergröße zu niedrig war bei ca. 24 Millionen Datensätzen.

The total number of locks exceeds the lock table size

Nach kurzem googlen fand ich den Artikel von Cyril, der offensichtlich die selben Schwierigkeiten hatte.

Die Lösung war zum Glück recht einfach. In der Datei my.cnf muss der folgende Wert erhöht werden, bzw. die Konfigurationseinstellung hinzugefügt werden.

innodb_buffer_pool_size = 16M

Die neue Einstellung sollte dann die Arbeit mit der großen Tabelle ermöglichen.

innodb_buffer_pool_size = 268435456

Zum Schluss dann noch den MySQL-Server neu starten, damit die Änderungen auch wirksam werden.

08.10.2010
von Daniel
20 Kommentare

Enums in PHP (sicher ist sicher)

Wer hin und wieder auch mal in anderen Sprachen wie z.B. Java programmiert, dem werden Enums sicher nicht fremd sein. Wäre es nicht schön, ähnliches auch unter PHP zur Verfügung zu haben, um nicht jeden Status als String oder Int zu übergeben? Tja, das Leben ist aber kein Ponyhof und wenn PHP das nicht anbietet, dann schaffen wir uns eben eine eigene Lösung um besser und (typ-)sicherer zu programmieren. Weiterlesen →

07.10.2010
von Daniel
Kommentare deaktiviert

Attachment in CouchDB speichern

Letzte Woche habe ich ja schon etwas über CouchDB berichtet und wie unkompliziert man damit arbeiten kann. In den Dokumenten können aber nicht nur beliebige Daten in beliebiger Struktur gespeichert werden, es ist auch sehr einfach Dateianhänge zu speichern. Dieser Code-Schnipsel ist ein einfaches Beispiel, wie es mit dem Zend_Http_Client funktioniert. Wichtig ist nur, dass immer die _rev(Id) des jeweiligen Dokumentes mit übergeben wird, da sonst nichts gespeichert wird und ein Konflikt auftritt.

$image = 'bild.jpg'; $mimeType = mime_content_type($image); $content = file_get_contents($image); $url = 'http://developer:5984/database/document/path?rev=xx-xxxxx'; $client = new Zend_Http_Client(); $response = $client->setUri($url) ->setMethod('PUT') ->setHeaders(array('Content-Type' => $mimeType)) ->setRawData($content, $mimeType) ->request() 

Die Anhänge könnten auch mit dem Dokument im JSON-Format übertragen werden. Dafür müsste $content dann aber erst base64_encoded werden. Hierbei werden bestehende Anhänge aber gelöscht!

30.09.2010
von Daniel
1 Kommentar

CouchDB: kann mehr als nur Möbel speichern

CouchDB klingt nicht nur bequem, es ist bequem! CouchDB ist eine dokumentenbasierte Datenbank mit REST-API, serverseitigen JavaScript-Views, Datenaustausch im JSON-Format und weil das noch nicht genug ist gibt es das Admin-Webinterface Futon gleich noch mit der Installation dazu.

Die Anbindung an eine (PHP-)Anwendung ist bei den Voraussetzungen nun denkbar einfach. Aber eins nach dem anderen. Weiterlesen →

27.09.2010
von Daniel
9 Kommentare

Methoden-Templates mit __call() erstellen

Die magischen Funktionen bei PHP sind wie sicher vieles in der Programmierung eine Geschmacks- oder sogar fast schon eine Glaubensfrage. Die einen lieben sie, die anderen hassen sie. Je nach Verwendung können sie schonmal einen Entwickler in den Wahnsinn treiben, wenn irgendwelche Werte, irgendwie aus dem Nichts kommen und auch wieder dahin verschwinden.

Es gibt aber auch Fälle, in denen die magische Methode __call() den Code lesbarer machen kann und gleichzeitig eine Menge Schreibarbeit einspart.

Weiterlesen →

Schlagwörter: Adapter, Amazon, Animation, Annotations, Anonyme Klasse, Ant, Apache, API, Array, ArrayAccess, Attachment, AutoLoader, Bedienung, Bedingung, Benchmark, Bildbearbeitung, BOM, Bootstrap, Bot, Byte Order Mark, Callback, CamelCase, Canvas, Captcha, Cheatsheet, CLI, Closure, Cloud, CodeSniffer, Community, Comparator, Contest, Controller, Converter, CouchDB, Countable, Cronjob, CSV, CustomLibrary, Custom_Model, Data Mapper, Datei, Datenbank, Datenstruktur, Datentypen, Dating, Decorator, Dekorierer, Design Patterns, Dump, Duplikat, each, Eclipse, Entwicklung, Entwurfsmuster, Enum, Erweiterung, Eventhandling, Exception-Handling, Extension, Factory, Fehler, Flash, Foreach, Formatierung, Formular, Funktion, Futon, Header, HTML5, HTTP, IDE, If, Implementierung, InnoDB, Interceptor, Interface, isset, Iterator, Java, JavaScript, jQuery, Konfiguration, Konsole, Kontrollstruktur, kopieren, Late Static Binding, Layout, Linux, Listeners, Logging, Löschen, Magento, Magic Methods, Marketing, Methode, Model, MVC, MySQL, NetBeans, Objekt, Observable, Observer, OOP, Operator, Parameter, Partnersuche, Performance, PHP, phpMyAdmin, PHPUnit, Plugin, Proxy, Qualitätssicherung, Query, Reflection, Request, Response, Rest-API, Rockstar, Routing, S3, Samba, Scheifen, Schleife, Schutz, Secure Shell, Selbstreferenz, Shop, Sicherheit, Sicherung, Singleton Pattern, SOAP, Sortierung, Sourcecode, Spam, Speicherproblem, Spickzettel, SPL, SSH, Statement, Stellvertreter, Strategy Pattern, Stream, String, Sun VirtualBox, Support, Switch, Symfony, Symfony2, Symfony Live, Tag, Template, Template Method, Ternär Operator, Testing, Thumbnail, Tool, Tour, Twig, Type-Cast, Umwandlung, Underscore, unset, Vererbung, Verzweigung, Video, Videospiel, Virtualisierung, Visitor Pattern, Vorschaubild, walk, Webserver, Webservice, Weiterleitung, Wrapper, Youtube, Zeitsteuerung, Zend Framework, Zend_Cloud, Zend_CodeGenerator, Zend_Http_Client, Zend_Service, Zugriffsmethode