Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Fotis alexandrou scalability on php - media camp 2010

987 views

Published on

  • Be the first to comment

Fotis alexandrou scalability on php - media camp 2010

  1. 1. PHP Op&miza&on & Scalability  Techniques  Fo&s Alexandrou  Web Developer  (e‐skafos.gr, iheartshops.com & many more)  Disclaimer: Highly Technical Presenta&on, might cause brain  injuries  Fo&s Alexandrou ‐ @falexandrou ‐  www.redmark.gr 
  2. 2. When is op&miza&on needed  •  Web Applica&ons  •  Websites with lots of traffic  – E‐Skafos case study  •  Websites that are promising high traffic  – iHeartShops case study  Fo&s Alexandrou ‐ @falexandrou ‐  www.redmark.gr 
  3. 3. Easy Stuff  •  Opcode Caching – Boot and forget – Pre‐ compiled code loaded in memory (runs a lot  faster)  – APC   – Xcache  •  Pecl Extensions  •  Minimum Configura&on  Fo&s Alexandrou ‐ @falexandrou ‐  www.redmark.gr 
  4. 4. Advanced Stuff ‐ Memcache  •  Storage engine using keys  •  Re‐seXng aYer data update  •  Memcache became really popular aYer  Facebook started using it  •  Cheat: Write a class that extends it ;)  Fo&s Alexandrou ‐ @falexandrou ‐  www.redmark.gr 
  5. 5. Advanced Stuff – Code Tweaks  •  “echo“ func&on faster than print  •  Single quotes (‘) faster than double quotes (“)  •  Using short tags “<?” is more expensive than  “<?php”  •  The shut up equator (@)   •  Leave Magic to David Coperfield (__get(),  __set(), __autoload())  Fo&s Alexandrou ‐ @falexandrou ‐  www.redmark.gr 
  6. 6. Code Tweaks – String replacement  •  str_replace faster than preg_replace (not  always)  – str_replace faster for templa&ng  – preg_replace faster for large data sets  •  str_replace($array1, $array2, $subject) a lot  faster than loops  Fo&s Alexandrou ‐ @falexandrou ‐  www.redmark.gr 
  7. 7. Code Tweaks – String replacement  (preg_replace vs str_replace)  •  Data sets              Templa&ng  Fo&s Alexandrou ‐ @falexandrou ‐  www.redmark.gr 
  8. 8. Code Tweaking ‐ Loops  •  NEVER use func&ons inside a for – they’re  called upon each loop!  •  Bad:  for ($i = 0; $i<count($array); $i++){  …….  }  •  Good:  $count = count($array) //Called once  for ($i = 0; $i<$count; $i++){  …….  }  Fo&s Alexandrou ‐ @falexandrou ‐  www.redmark.gr 
  9. 9. Code Tweaks – Constants &  Sta&c  •  Constants are your friends  $foo = array(‘bar’=>0);  $foo[‘bar’] = 1;  Is 700% slower than  $foo[‘bar’] = 1;  •  Sta&cs are also your friends  – Declaring sta&c func&ons is 4 &mes faster!  Fo&s Alexandrou ‐ @falexandrou ‐  www.redmark.gr 
  10. 10. Code Tweaks – Proper coding  •  Go with the flow:  – Ini&alize your variables  – Use singleton classes  – Study SQL & avoid PHP juggling when SQL can do  the hard work  Fo&s Alexandrou ‐ @falexandrou ‐  www.redmark.gr 
  11. 11. Use a second web server for sta&c  stuff  •  Install a second web server on second IP (eg.  Ligh{pd) and replace images, css, js, mov, flv  paths  •  Avoid main webserver overhead  •  Tune up your main web server  •  Use mod_compress on ligh{pd  Fo&s Alexandrou ‐ @falexandrou ‐  www.redmark.gr 
  12. 12. SQL op&miza&on  •  Replica&on  – Use master server for inserts, updates, deletes  – Use slave server for selects  •  Use memcache for database stuff (selects or  stored procedures)  •  Mul&ple Databases  Fo&s Alexandrou ‐ @falexandrou ‐  www.redmark.gr 
  13. 13. Deploy to the Cloud  •  Windows Azure  – Available on Monday 12/4/10 (for Greece)  – Programmer != Sysadmin  – Add instances easily  •  Amazon EC2  – You need an experienced administrator  •  Other par&es  •  Cheaters (Selling dedicated servers as cloud)  Fo&s Alexandrou ‐ @falexandrou ‐  www.redmark.gr 
  14. 14. Thank you!  •  Ques&ons  •  Contact Informa&on  – fo&s@redmark.gr  – twi{er.com/falexandrou  – facebook.com/falexandrou  – www.redmark.gr ‐ www.e‐skafos.gr ‐  www.iheartshops.com  ‐ Thnx to @HumanWorks for the &ps    Fo&s Alexandrou ‐ @falexandrou ‐  www.redmark.gr 

×