Josh Holmes - Keynote talk - The Lost Art of Simplicity:
Josh talked about how overcomplicating things seems to happen all to often and grave a great example of a man simply trying to pluck an apple from a tree. He introduced me to "the truck factor" which I knew by a different name but this one has a much better ing to it :)
Stefan Priebsch - AntiPHPatterns:
I took alot away from this talk. Stefan had some great usage cases where singletons are bad and I have come across similar problems in my own code. I still think are cases where it makes sense and they are great for chucking an example together, but for production code and unit testing they are a bit of a nightmare.
He also pointed out that using global within a class is a real pain for unit testing too and ideally you should use the class __construct() function to get any required arrays/objects from outside the class (dependencies).
cakePHP took a bit of bashing during the talk due to it's insanely high number of globals. CakePHP wasn't alone either it seems a great many open source PHP projects are taking steps to fix there high use of globals and singletons.
Remo Biagioni - Database Optimization:
This was a story about how a small side projected grew into a multi server nightmare in just a few short years. He gave some good examples of how not to manage your databases and some equelly good examples of how to speed up different aspects of the database server. In short:
Reduce the number of queries as much as possible by merging them together.
INSERT IGNORES are faster than a SELECT query and then a possible a INSERT query.
Move the queue to memory
Use LOW_PRIORITY on DELETEs that don't matter.
memcached is awesome, if your not using memcached or something like it then you really should.
If possible, avoid; LIKE, GROUP BY, DISTINCT as these are all slow.
Use something like beanstalked to manage the queue.
They used an MD5 hash (calculated in php) as a primary/unique row key. This is faster than using AUTO_INCREMENT to manage the primary keys. Note: you could use sha1() for even less chance of a duplicate key.
HA Proxy, Google's MMM, NoSQL and CouchDB all got a mention near the end and during question time.
Kore Nordmann - CouchDB & PHPillow:
Damien gave a good talk on security in PHP, he covered the usual stuff about REGISTER_GLOBALS being a terrible idea on any system, production or development. But went into far more detail on how he searches for security issues in a short space of time so that you can quickly audit your own code. The bottom line is search the php code with the help of a tokenizer for php injection in places that use backticks require/include etc and eval. Search the codes notes for swearing and keywords such as "todo".
A good tip for finding redundent code he gave was search for variables that only appear once. Some of these will be global variables but some of them may well lead you to old or troubling code.
Tools he recommended were Groogle, Reviewboard, Rietvold and Smartbear.