Skip to content

Instantly share code, notes, and snippets.

@lukearmstrong
Created March 8, 2012 09:28
Show Gist options
  • Save lukearmstrong/1999912 to your computer and use it in GitHub Desktop.
Save lukearmstrong/1999912 to your computer and use it in GitHub Desktop.
PHP UK Conference 2012
PHP UK Conference 2012
https://joind.in/event/view/824
Great Talks
Well Organised
Kept me watered
Great Food
Free Beer
I didn't catch a PHP Elephant plushie :(
I didn't win an O'Reilly Book :(
BUT I GOT FREE FOOD AND BEER AND CRISPS AND PRETZELS!
A look at PHP in 2012
Rasmus Lerdorf
Slides: http://talks.php.net/show/phpuk2012/
Rasmus is down to earth.
Your users don't care what language you use.
PHP is a front-end language.
Don't be an ass thinking about making a dynamicaly typed language statically typed.
Use the latest version.
CLI Server (running unit tests?)
Hash table collisions fix. HashDOS ($_POST/$_GET)
v6 has been shelved due to major issues with Unicode.
Contribute to PHP
http://bugs.php.net/random (Submit Code Patches)
http://edit.php.net/ (Documentation)
Fix PECL Extensions
Use PEAR to contribute useful Libraries
The Journey Towards Continuous Integration
Sebastian Marek (Plusnet)
Talk: https://joind.in/talk/view/4950
Slides: http://prezi.com/3gq-sqcvdknr/the-journey-towards-continuous-integration/
Started off having to manage a large codebase, that spanned several versions of PHP (3/4/5).
CI was investigated, but had to be sold to management because it boiled down to money.
Used Intrest Rates to relate to more development time spent hoping old shit worked, as opposed to proving old shit worked.
DocBlox (not PHPDocumentor)
PHP Unit (not Simple Test)
Cruise Control + phpUnderControl
Behat
Jenkins
Build Box: Consider this for the new development box
Git
Unit Tests
Functional Tests (Selenium)
# See Slides
PHP 5.4: The New Bits
Davey Shafik (Engine Yard/Orchestra)
Talk: https://joind.in/talk/view/4946
Slides: http://speakerdeck.com/u/dshafik/p/php-54-the-new-bits
<?= 'Always available, even with short tags disabled'; ?>
<? $var = 'Not always available, can be disabled with short tags off due to XML clashes'; ?>
<? $new_array_syntax = [1, 2, 3, 4, 5]; // $php_less_than_5_4 = array(1, 2, 3, 4, 5); ?>
Class Traits == Copy and Paste for the Compiler (alternative to extending classes, useful for Singletons and getting instance)
New way of using odd binary notation, perhaps fixes obscure lolphp bug on reddit pointed out by Al.
# See Slides
Security audits as an integral part of PHP application development
Sijmen Ruwhof
Talk: https://joind.in/4963
Slides: http://www.slideshare.net/sruwhof/security-audits-as-integral-part-of-php-application-development-11774289
Explanined the obvious, don't trust user input, but also covered the not-so obvious, dont trust $_SERVER[] variables.
Demonstrated tools to scan open ports on servers, discover installed applications (such as phpMyAdmin), brute force logins using known passwords.
Generally the talk wasn't that great, his English wasn't great, but still gave me some whitehat ideas.
Scaling Communication with Continuous Integration
LB Denker (Etsy)
Talk: https://joind.in/talk/view/4953
Slides: http://www.slideshare.net/elblinkin/scaling-communication-via-continuous-integration
Allow anyone to deploy.
They deploy several times an hour.
Over 100 developers.
PHPLint/Unit Testing gives confidence to deploy.
If people fuck up, they will be more careful in future, and it will be fixed by them very quickly as everyone can deploy.
(As opposed to the shitty developers/trusted developers model, as pointed out by Github talk, and used by Plusnet)
Try { Getting People To Come To A Talk About Exceptions }
Ed van Beinum
Talk: https://joind.in/talk/view/4959
Slides: http://speakerdeck.com/u/edwin/p/try-getting-people-to-come-to-a-talk-on-exceptions
Really good speaker. Amusing. Zombie Apocolpse Examples.
Basically explained when and when not to throw exceptions, only throw an exception if you have to kill the application.
Don't throw an exception if you can easily determine the expected result.
Using PHP at Scale
Rasmus Lerdorf, Hugh E Williams, Ian Barber, Nikolay Bachiyski
Wordpress.com store sessions in cookies on the client. Consensus agrees that solution is retarded due to massive headers and MTU issues.
Challenges at scale: extreme data and platforms at eBay
Hugh E Williams (eBay)
Talk: https://joind.in/talk/view/4962
Slides: ?
Unplugs shit in the datacentre for fun, fire drill for devops; but much more fun.
Amazing the amount of effort they put into their search.
Log everything.
Analyse what users are doing.
150(?) Developers, 18 months, brand new Datacentre; just for Search.
Masterizing PHP Data Structure 102
Patrick Allaert
Talk: https://joind.in/talk/view/4968
Slides: http://www.slideshare.net/patrick.allaert/masterizing-php-data-structure-102-phpuk-2012
One for Al.
Some mentalist wittering on about theoretical data types and how using arrays is bad.
Yet instead of using Arrays, would instanciate an object from an extension Class, just to store a fucking variable.
Less memory, but possibly longer runtime or more CPU? # Investigate
Allows you to enforce variable types, but only if you want to be an ass (Rasmus).
Thoroughly test usage of References <? $array = (1, 2, 3); foreach ($array as $key => &item) {}; foreach ($array as $key => $item) {}; ?>
Monitoring your backend for speed and profit
Andrew "Bob" Brockhurst (BBC)
Talk: https://joind.in/talk/view/4964
Slides: ?
Wasn't really about monitoring in the sense I was thinking of, but still a good talk.
BBC went from 40 servers to 72 servers for Olympics.
BBC kept Java backend.
BBC introduced new PHP front end, didn't involve backend rewrite.
All PHP applications run in one application.
They use the Zend Framework. (WTF!)
Use Varnish (64GB Cache), default config is good, monitoring and tweaking makes it better. Can configure using C.
Log and Monitor everything.
Cookies stipped from Requests for Caching Hits.
Partials on Pages mean personal content ("Welcome back Luke") can be generated, but the rest of the content is Cached.
MySQL Update
Dave Stokes (MySQL/Oracle)
Talk: https://joind.in/talk/view/4970
Slides: ?
Use latest version of MySQL for performance (GA 5.5)
When compling configure using mysqlnd (Native Driver) # Investigate SSL?
Investigate Unbreakable Linux (Oracle's version of Redhat with rewritten device drivers/kernel)
Investigate MySQL Cluster (Write-only Master, Read-only Slaves)
Consider Oracle Support (may be issues regarding virtual machines) benefit is MySQL Monitor, Tools, etc.
Tools can be used on Open Source versions
Oracle are committed to providing security fixes to Enterprise and Community versions at the same time.
Oracle are always going to release MySQL under an Open Source License.
Distribute the workload
Helgi Þormar Þorbjörnsson (Orchestra/Engine Yard)
Talk: https://joind.in/talk/view/4958
Slides: http://speakerdeck.com/u/helgi/p/distribute-the-workload-php-uk-2012-day-2
Very interesting chap, lots of things we can learn from this talk.
The ideas stem from things I discovered from playing with other PAAS (Platform As A Service) providers such as Heroku.
Instead of the Application relying on a fixed Database server, Caching server, Assets server, it was decentralized allowing the potential
for these "servers" to live on other virtual or physical server(s).
So instead of spending a lot of money on a very powerful physical server, the idea is to have several cheaper virtual servers which can increase,
or decrease, depending on the current load. This process can be automated, and we end up with a situation where there is no "main" server, any
server can die at any time and the other servers continue operating as normal, and more servers can be spawned when required.
The application server can be replicated across many servers, but the application server operates as Read-only. So when a CMS needs to upload files,
they can be uploaded via a layer which determines if these need to be stored on a networked filesystem, or a CDN service such as Amazon S3,
or on the local hard drive (if in Development mode).
If a CMS, such as the Orlebar Brown product image uploader, takes time to process that upload, these jobs can be queued using Gearman. This means
that, the user can upload files, with an instant response, whilst in the back end the images are being resized and saved to the 36 different sizes,
without "blocking" the user's browser from continuing with further requests.
The database server can also be replicated across many servers, as I discovered from the MySQL talk, allowing many read-only slaves to serve data from
a write-only master.
PHP Under the Hood
Johannes Schlüter (PHP/MySQL/Oracle)
Talk: https://joind.in/talk/view/4967
Slides: http://schlueters.de/presentations/#p=20120225_phpuk_php_under_the_hood&n=1
Delving into the guts of PHP, the C source code.
Waaaaaaay over my head.
SQL vs NoSQL
Dave Stokes, Derick Rethans, Johannes Schlüter, ?, Helgi Þormar Þorbjörnsson
A rather pointless nerd fight involving lots of flailing of limbs. Helgi considers both can live side by side. Dave has the experience
to see the industry moves in phases and there is no silver bullet, so no need to get worked up about it. Derick and ? had a fight about
MongoDB vs CouchDB. Johannes was stuck in the middle.
No consensus as to when you would use one over the other.
I gathered that MongoDB/CouchDB require more thought on the application layer. But MySQL/PostgreSQL that is handled by the database layer.
SQL could be quicker if more thought was put into denormalizing data, potentially generated tables, but either way involves thought, and
seemingly SQL required less thought than NoSQL. NoSQL may be flavour of the month, but is unproven.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment