Your SlideShare is downloading. ×
  • Like
Heavy Web Optimization: Backend
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Heavy Web Optimization: Backend

  • 5,784 views
Published

Slide in a seminar about backend optimization with PHP. …

Slide in a seminar about backend optimization with PHP.

Talks about php, caching, scalability, amazon web service

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
5,784
On SlideShare
0
From Embeds
0
Number of Embeds
2

Actions

Shares
Downloads
78
Comments
0
Likes
3

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide
  • Determine the existing size of your shared memory segment: sysctl -a | grep shmmax Set sysctl -w kernel.shmmax=50331648
  • Determine the existing size of your shared memory segment: sysctl -a | grep shmmax Set sysctl -w kernel.shmmax=50331648
  • More installation LAMP: http://jonathanhui.com/building-ec2-amazon-linux-lamp
  • Mailchimp: http://mailchimp.com/pricing/

Transcript

  • 1. Heavy Web Optimization BACK-END <?php //from a PHP dev ?>Vo Duy Tuan PHP Developer from Reader.vn, Picto.vn & more…
  • 2. $who_am_I? My Name is Võ Duy Tuấn PHP 5 Zend Certified Engineer Interests: PHP, Social Network, Optimize Web Works:  Thegioididong  Reader.vn, Picto.vn CEO/Founder  Trainer  Freelancer  Consultant
  • 3. $table_of_content Warm up: Some best practices Back-end Optimization De-normalization Asynchronous processing Caching Scalability
  • 4. 1 Warm up: Some best practices
  • 5. 1.1. Smarty Tricka. Prevent recompile .tpl file:$smarty = new Smarty();$smarty->compile_check = false;b. Compile all .tpl files:set_time_limit(1000); //do not interrupt$smarty->compileAllTemplates(.tpl,true);
  • 6. 1.2. Pagination From To
  • 7. 1.2. Pagination – Why? How do we make pagination feature?mysql_query(‘SELECT COUNT(*) FROM tbl WHERE col LIKE “%word%”’)> Get total record > Get toal page > Build page number list with a simple loopmysql_query(‘SELECT * FROM tbl WHERE col LIKE “%word%” LIMIT 0,20’)> Get data of current page (page 1, with 20 rows/page)Do you have the answer  ?
  • 8. 1.3. Get enough data from remote server Send HEAD to detect 404 error from remote URL Read first bytes of remote file to detect image type,width/height
  • 9. 2 Back-end Optimization
  • 10. 2.1. Where is Back-end?“80% of the end-user response time is spent on the front-end. Most of this time is tied up in downloading all thecomponents in the page: images, stylesheets, scripts, Flash,etc. Reducing the number of components in turn reduces thenumber of HTTP requests required to render the page. Thisis the key to faster pages.”
  • 11. 2.2. Back-end Optimize Theory Reduce disk In/Out Reduce complex/fuzzy Reduce budget
  • 12. 2.3. Debugging & Profiling Nusphere Phped Debugger Xdebug top command Apache bench
  • 13. 2.3.1. Nusphere Phped Debugger Installation:  Step 1: Install php extension  Step 2: Install DBGbar addon for Firefox or DBG debugger on Chrome  Step 3: Update PHP.INI config  Restart your web server (if needed)
  • 14. 2.3.1. Nusphere Phped Debugger
  • 15. 2.3.2. Xdebug Installation:  Step 1: Install php extension  Step 2: Update PHP.INI config  Restart your server (if needed)
  • 16. 2.3.2. Xdebug PHP.INI [xdebug] zend_extension_ts = C:..php_xdebug-2.1.0-5.2-vc6.dll xdebug.profiler_output_dir = "C:xdebug" xdebug.profiler_output_name = "callgrind.%R.%t" xdebug.profiler_enable = 0 xdebug.profiler_append=0 xdebug.profiler_enable_trigger = 1 xdebug.extended_info=1 Usage: http://example.com/index.php?XDEBUG_PROFILE
  • 17. 2.3.2. Xdebug
  • 18. 2.3.3. linux command top
  • 19. 2.3.4. Apache Bench
  • 20. Somewhere in the dark…
  • 21. 3 De-normalization
  • 22. 3.1. What is De-normalization? Most of use live with Relational DB. What is normalization?  Database normalization is the process of organizing the fields and tables of a relational database to minimize redundancy and dependency .(Wiki) What is De-normalization?  Denormalization is the process of attempting to optimise the read performance of a database by adding redundant data or by grouping data. (Wiki)
  • 23. 3.2. How to de-normalize? Vertical Split. Pre-calculated value. Duplicate data.
  • 24. 3.2.1. Vertical Split
  • 25. 3.2.1. Vertical Split (cont.)
  • 26. 3.2.2. Pre-calculated value
  • 27. 3.2.3. Duplicate data
  • 28. 3.3. Data correctness Normalization = Correctness Denormalization = Performance
  • 29. 4 Asynchronous processing
  • 30. 4.1. Job queue
  • 31. 4.2. Job queue :: Gearman  http://gearman.org/
  • 32. But….Apache can be a job queue,
  • 33. 4.3. Async Requestfunction backgroundHttpPost($url, $prm = ){ $p=parse_url($url); $fp = fsockopen($p[host], isset($p[port])?$p[port]:80, $en, $es, 30); if (!$fp) return false; else { $out = "POST ".$p[path]."?".$p[query]." HTTP/1.1rn"; $out.= "Host: ".$p[host]."rn"; $out.= "Content-Type: application/x-www-form-urlencodedrn"; $out.= "Content-Length: ".strlen($prm)."rn"; $out.= "Connection: Closernrn"; if ($prm != ) $out.= $prm; fwrite($fp, $out); fclose($fp); return true; }}Usage:$taskUrl = http://picto.vn/task/deletephoto;backgroundHttpPost($taskUrl, photoid= . $myPhoto->id);
  • 34. 5 Caching
  • 35. 5.1. What is caching?
  • 36. 5.2. What is APC? Alternative PHP Cache – APC Free PHP Extension PHP Opcode cache Support User data cache Run on SAME machine with PHP NOT support multi servers
  • 37. 5.3. APC Monitor
  • 38. 5.4. APC Using
  • 39. 5.5. APC Tip Opcode your web code only Disable APC for PhpMyAdmin<Directory "/mysite/public_html/"> ... php_admin_flag apc.cache_by_default On</Directory<Directory "/mysite/public_html/phpmyadmin/"> ... php_admin_flag apc.cache_by_default Off</Directory>
  • 40. 2.6. APC Tip.. Cache STRING is better than ARRAY Long Time To Live better than Short Case study:  Caching for Feed System:
  • 41. BEFORE
  • 42. BEFORE
  • 43. ANALYSE
  • 44. AFTER
  • 45. Short TTL make fragmentation
  • 46. Short TTL make fragmentation
  • 47. 6 Cloud computing - AWS  Amazon Elastic Compute Cloud – Amazon EC2 + EBS  Amazon Simple Storage Service – Amazon S3  Amazon Simple Email Service – Amazon SES
  • 48. 6.1. Amazon EC25
  • 49. 6.1. Amazon EC2 (cont.)5
  • 50. 6.2. Amazon S35
  • 51. 6.2. Amazon S3 (cont.)5
  • 52. 6.2. Amazon S3 (cont.)5
  • 53. 6.3. Amazon SES 1,000,000 emails = $1005 Support SMTP
  • 54. 6.3. Amazon SES (cont.)5
  • 55. 6.4. Adapt to AWS for scalability Local server (Web & RDBMS) + S35 EC2 (Web) + EBS (RDB) + S3 EC2 (Web) + EBS (local storage) + Amazon RDS (RDB) + S3 EC2 (Web) + EBS (local storage) + EC2 (noSQL) + S3 …Can use with more Amazon Services
  • 56. Thank you!It’s time to query …CONTACTFullname: Vo Duy TuanEmail: tuanmaster2002@yahoo.comPhone: 0938 916 902Website: http://bloghoctap.com