PHP Op&miza&on & Scalability 
       Techniques 
                        Fo&s Alexandrou 
                         Web Dev...
When is op&miza&on needed 
•  Web Applica&ons 
•  Websites with lots of traffic 
  – E‐Skafos case study 
•  Websites that a...
Easy Stuff 
•  Opcode Caching – Boot and forget – Pre‐
   compiled code loaded in memory (runs a lot 
   faster) 
  – APC  ...
Advanced Stuff ‐ Memcache 
•  Storage engine using keys 
•  Re‐seXng aYer data update 
•  Memcache became really popular aY...
Advanced Stuff – Code Tweaks 
•  “echo“ func&on faster than print 
•  Single quotes (‘) faster than double quotes (“) 
•  U...
Code Tweaks – String replacement 
•  str_replace faster than preg_replace (not 
   always) 
  – str_replace faster for tem...
Code Tweaks – String replacement 
    (preg_replace vs str_replace) 
•  Data sets              Templa&ng 




            ...
Code Tweaking ‐ Loops 
•  NEVER use func&ons inside a for – they’re 
   called upon each loop! 
•  Bad: 
  for ($i = 0; $i...
Code Tweaks – Constants &  Sta&c 
•  Constants are your friends 
  $foo = array(‘bar’=>0); 
  $foo[‘bar’] = 1; 
  Is 700% ...
Code Tweaks – Proper coding 
•  Go with the flow: 
  – Ini&alize your variables 
  – Use singleton classes 
  – Study SQL &...
Use a second web server for sta&c 
                 stuff 
•  Install a second web server on second IP (eg. 
   Ligh{pd) an...
SQL op&miza&on 
•  Replica&on 
  – Use master server for inserts, updates, deletes 
  – Use slave server for selects 
•  U...
Deploy to the Cloud 
•  Windows Azure 
  – Available on Monday 12/4/10 (for Greece) 
  – Programmer != Sysadmin 
  – Add i...
Thank you! 
•  Ques&ons 
•  Contact Informa&on 
  – fo&s@redmark.gr 
  – twi{er.com/falexandrou 
  – facebook.com/falexand...
Upcoming SlideShare
Loading in …5
×

Fotis alexandrou scalability on php - media camp 2010

878 views
809 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
878
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
3
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

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 

×