Basic Apache Performance Tips

Anyone mass-hosting virtual domains on apache knows the problems. Over the time I collected some basic and important performance tips which I want to give back to the community in aggregated form. Sorry, that I don’t remember all sources of information – so I will mention none. Google will help you. Here’s the list: Den Rest des Beitrags lesen »

ActiveRecord look-alike written in PHP using AdoDB

Since I developed with Rails using the ultra-comfortable ActiveRecord I felt the need for a similar solution in PHP. Googling around I found some people saying this is impossible. That’s true: Ruby’s OOP implementation is in many ways superior to PHP’s.

But anyway I decided: Some of ActiveRecords comfort must be possible in PHP. I’ve decided to build on AdoDB for PHP since it already does the heavy lifting of database abstraction very good.

The interface is currently very limited and should be very self explanatory. For all interested hackers I’ve set up a git repository at GitHub and would be very interested on your feedback.

This project grew out of the need to ease up database development in an already existing legacy application. It’s not meant as an exact ActiveRecord replacement in PHP – just similar in convenience.

Just follow this link: http://github.com/kakra/adodbrecord/

MySQL server has gone away

Heute habe ich festgestellt, daß PHP (bzw. die Funktion mysql_error()) diesen Fehler ausgibt, wenn man eine Tabelle mit großen Blob-Daten füllen möchte – z.B. Bilder oder Downloads. Ob man große Daten besser im Dateisystem ablegt und nur den Dateinamen in der Tabelle, oder die Daten direkt in der Tabelle, sei mal dahingestellt. Fakt ist, daß der MySQL-Server es meist erlaubt, derlei große Queries zu verarbeiten. Das Problem ist eigentlich der Client, der per Default auf 1MB-Häppchen beschränkt ist. Um das zu beheben, sollte man in der my.cnf einfach max-allowed-packet höher setzen – präferabel auf irgendwas etwas größer als die PHP-Einstellung für max-post-size.

Hintergrund der Veranstaltung war eine Bilddatenbank, die die Originalbilder in der DB vorhält und für jede abgerufene Zoom-Stufe eine Cache-Kopie auf dem Dateisystem ablegt, die von einer Reinigungsroutine bei Nichtgebrauch irgendwann wieder weggeräumt wurde. Wurden die Originalbilder größer als 1MB, „has the MySQL server“ auf einmal „gone away“. Hat mir einige Kopfschmerzen bereitet, da die Fehlermeldung keinen Hinweis auf Query- oder Packet-Size gab.

Veröffentlicht in Linux, MySQL, PHP, Programmierung. 2 Comments »