Heavy Web Optimization                   BACK-END                          <?php //from a PHP dev ?>Vo Duy Tuan   PHP Deve...
$who_am_I?   My Name is Võ Duy Tuấn   PHP 5 Zend Certified Engineer   Interests: PHP, Social Network, Optimize Web   W...
$table_of_content   Warm up: Some best practices   Back-end Optimization   De-normalization   Asynchronous processing...
1   Warm up: Some best practices
1.1. Smarty Tricka. Prevent recompile .tpl file:$smarty = new Smarty();$smarty->compile_check = false;b. Compile all .tpl ...
1.2. Pagination   From   To
1.2. Pagination – Why?   How do we make pagination feature?mysql_query(‘SELECT COUNT(*) FROM tbl WHERE col LIKE “%word%”’...
1.3. Get enough data from remote server   Send HEAD to detect 404 error from remote    URL   Read first bytes of remote ...
2   Back-end Optimization
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 downl...
2.2. Back-end Optimize Theory   Reduce disk In/Out   Reduce complex/fuzzy   Reduce budget
2.3. Debugging & Profiling   Nusphere Phped Debugger   Xdebug   top command   Apache bench
2.3.1. Nusphere Phped Debugger   Installation:       Step 1: Install php extension       Step 2: Install DBGbar addon f...
2.3.1. Nusphere Phped Debugger
2.3.2. Xdebug   Installation:       Step 1: Install php extension       Step 2: Update PHP.INI config       Restart yo...
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...
2.3.2. Xdebug
2.3.3. linux command top
2.3.4. Apache Bench
Somewhere in the dark…
3   De-normalization
3.1. What is De-normalization?   Most of use live with Relational DB.   What is normalization?       Database normaliza...
3.2. How to de-normalize?   Vertical Split.   Pre-calculated value.   Duplicate data.
3.2.1. Vertical Split
3.2.1. Vertical Split (cont.)
3.2.2. Pre-calculated value
3.2.3. Duplicate data
3.3. Data correctness   Normalization = Correctness   Denormalization = Performance
4   Asynchronous processing
4.1. Job queue
4.2. Job queue :: Gearman                       http://gearman.org/
But….Apache can be a job queue,
4.3. Async Requestfunction backgroundHttpPost($url, $prm = ){   $p=parse_url($url);   $fp = fsockopen($p[host], isset($p[p...
5   Caching
5.1. What is caching?
5.2. What is APC?   Alternative PHP Cache – APC   Free PHP Extension   PHP Opcode cache   Support User data cache   R...
5.3. APC Monitor
5.4. APC Using
5.5. APC Tip   Opcode your web code only   Disable APC for PhpMyAdmin<Directory "/mysite/public_html/">    ...    php_ad...
2.6. APC Tip..   Cache STRING is better than ARRAY   Long Time To Live better than Short   Case study:       Caching f...
BEFORE
BEFORE
ANALYSE
AFTER
Short TTL make fragmentation
Short TTL make fragmentation
6   Cloud computing - AWS       Amazon Elastic Compute Cloud – Amazon EC2 + EBS       Amazon Simple Storage Service – Am...
6.1. Amazon EC25
6.1. Amazon EC2 (cont.)5
6.2. Amazon S35
6.2. Amazon S3 (cont.)5
6.2. Amazon S3 (cont.)5
6.3. Amazon SES   1,000,000 emails = $1005   Support SMTP
6.3. Amazon SES (cont.)5
6.4. Adapt to AWS for scalability   Local server (Web & RDBMS) + S35   EC2 (Web) + EBS (RDB) + S3   EC2 (Web) + EBS (lo...
Thank you!It’s time to query …CONTACTFullname: Vo Duy TuanEmail: tuanmaster2002@yahoo.comPhone: 0938 916 902Website: http:...
Heavy Web Optimization: Backend
Heavy Web Optimization: Backend
Heavy Web Optimization: Backend
Heavy Web Optimization: Backend
Heavy Web Optimization: Backend
Upcoming SlideShare
Loading in...5
×

Heavy Web Optimization: Backend

5,981

Published on

Slide in a seminar about backend optimization with PHP.

Talks about php, caching, scalability, amazon web service

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
5,981
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
89
Comments
0
Likes
4
Embeds 0
No embeds

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/
  • Heavy Web Optimization: Backend

    1. 1. Heavy Web Optimization BACK-END <?php //from a PHP dev ?>Vo Duy Tuan PHP Developer from Reader.vn, Picto.vn & more…
    2. 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. 3. $table_of_content Warm up: Some best practices Back-end Optimization De-normalization Asynchronous processing Caching Scalability
    4. 4. 1 Warm up: Some best practices
    5. 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. 6. 1.2. Pagination From To
    7. 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. 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. 9. 2 Back-end Optimization
    10. 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. 11. 2.2. Back-end Optimize Theory Reduce disk In/Out Reduce complex/fuzzy Reduce budget
    12. 12. 2.3. Debugging & Profiling Nusphere Phped Debugger Xdebug top command Apache bench
    13. 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. 14. 2.3.1. Nusphere Phped Debugger
    15. 15. 2.3.2. Xdebug Installation:  Step 1: Install php extension  Step 2: Update PHP.INI config  Restart your server (if needed)
    16. 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. 17. 2.3.2. Xdebug
    18. 18. 2.3.3. linux command top
    19. 19. 2.3.4. Apache Bench
    20. 20. Somewhere in the dark…
    21. 21. 3 De-normalization
    22. 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. 23. 3.2. How to de-normalize? Vertical Split. Pre-calculated value. Duplicate data.
    24. 24. 3.2.1. Vertical Split
    25. 25. 3.2.1. Vertical Split (cont.)
    26. 26. 3.2.2. Pre-calculated value
    27. 27. 3.2.3. Duplicate data
    28. 28. 3.3. Data correctness Normalization = Correctness Denormalization = Performance
    29. 29. 4 Asynchronous processing
    30. 30. 4.1. Job queue
    31. 31. 4.2. Job queue :: Gearman  http://gearman.org/
    32. 32. But….Apache can be a job queue,
    33. 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. 34. 5 Caching
    35. 35. 5.1. What is caching?
    36. 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. 37. 5.3. APC Monitor
    38. 38. 5.4. APC Using
    39. 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. 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. 41. BEFORE
    42. 42. BEFORE
    43. 43. ANALYSE
    44. 44. AFTER
    45. 45. Short TTL make fragmentation
    46. 46. Short TTL make fragmentation
    47. 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. 48. 6.1. Amazon EC25
    49. 49. 6.1. Amazon EC2 (cont.)5
    50. 50. 6.2. Amazon S35
    51. 51. 6.2. Amazon S3 (cont.)5
    52. 52. 6.2. Amazon S3 (cont.)5
    53. 53. 6.3. Amazon SES 1,000,000 emails = $1005 Support SMTP
    54. 54. 6.3. Amazon SES (cont.)5
    55. 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. 56. Thank you!It’s time to query …CONTACTFullname: Vo Duy TuanEmail: tuanmaster2002@yahoo.comPhone: 0938 916 902Website: http://bloghoctap.com
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×