PHP at YAHOO

Reviews
Shared by: Shariq Bashir
Tags
Stats
views:
25
rating:
not rated
reviews:
0
posted:
9/4/2009
language:
English
pages:
0
PHP at Yahoo! http://public.yahoo.com/~radwin/ Michael J. Radwin October 20, 2005 1 Outline • Yahoo!, as seen by an engineer • Choosing PHP in 2002 • PHP architecture at Yahoo! 2 The Internet’s most trafficked site 3 25 countries, 13 languages 4 Yahoo! by the Numbers • 411M unique visitors per month • 191M active registered users • 11.4M fee-paying customers • 3.4B average daily pageviews October 2005 5 6 Engineering Values 1. – Security & Privacy We must protect our customers’ information 2. – High Availability If the site is offline, we’re missing the opportunity to serve our customers 3. – Performance We serve billions of pageviews a day 4. – – 7 Flexibility & Innovation Customize site for each market Rapid development of new features From Proprietary to Open Source 94 95 96 97 98 99 00 01 02 03 04 05 Web Server “Filo Server” DB Flat Files Web Lang yScript Apache 8 Choosing a Language How and Why We Selected PHP 9 Choosing PHP: brief history • October 2001: 3 proprietary languages – Costly to continue to maintain each – Limited features (no subroutines!) • Committee began researching – Compare features, performance – Build vs. Buy vs. Open Source • PHP selected May 2002 10 Ideal Language Criteria 1. High performance 8. Interpreted or dynamically compiled 9. i18n support 10. Clean separation of presentation/content/ app semantics 11. Low training costs 12. Doesn’t require CS degree to use 2. Robust, sand-boxed 3. Language features • Loops, conditionals • Complex data-types 4. C/C++ extensions 5. Runs on FreeBSD 11 Top 10 Language Choices yScript mod_include XSLT 12 Performance: Requests Requests/sec 350 300 250 req/s PHP mod_perl YSP 200 150 100 50 0 25 50 75 100 150 200 300 400 500 Concurrent requests HF2k yScript Network max 13 Performance: Memory Active Virtual Memory 1000000 kbytes active 800000 600000 400000 200000 0 25 50 75 100 150 200 300 400 500 Concurrent requests PHP mod_perl YSP yScript HF2k 14 Why we picked PHP 1. 2. 3. • Designed for web scripting High performance Large, Open Source community Documentation, easy to hire developers 4. “Code-in-HTML” paradigm 5. 6. 15 Integration, libraries, extensibility Tools: IDE, debugger, profiler PHP at Yahoo! Today 16 Yahoo!’s Development Methodology • Server Architecture • File Layout • Dependency Management • Security • Performance • Globalization 17 Server Architecture Web Server web server web server Load Balancer Scripts Apache Web Service s User Profile Server Ad Server 18 File Layout HTML Templates /usr/local/share/htdocs/*.php 95% HTML 5% PHP Template Helpers /usr/local/share/htdocs/*.inc 50% HTML 50% PHP Business Logic /usr/local/share/pear/*.inc 0% HTML 100% PHP C/C++ Core Code Data access, Networking, Crypto 0% HTML 0% PHP 19 Dependency Management • Base PHP package depends only on XML parser ./configure --disable-all • Self-Contained Extensions – – mysql, dba, curl, ldap, pcre, gd, iconv To enable 1. Install /usr/local/lib/php/20020429/ mysql.so 2. Add “extension = mysql.so” to php.ini – – 20 Avoids unnecessary dependencies Smaller Apache memory footprint Security: INI Settings • open_basedir – Insurance against /etc/passwd exploits • allow_url_fopen = Off – Use libcurl extension instead – Avoid open proxy exploits • display_errors = Off – However, log_errors = On • safe_mode = Off – Intended for shared hosting environment 21 Security: Input Filtering http://search.yahoo.com/search?p= • Cross Site Scripting (XSS) most common attack – Also “SQL Injection” • Normal approach – strip_tags() – mysqli_escape_string() – Examine every line code – Tedious and error-prone • Use input_filter hook – Sanitize all user-submitted data – GET/POST/Cookie 22 Performance: Opcode Caches • Easiest performance boost – Cache parsed .php scripts in shared memory – Optimizations – No code modifications! • Several products available – Zend Performance Suite – APC – Turck MMCache 23 Performance: PHP Extensions in C++ • PHP ships with 80 extensions written in C/C++ • Yahoo! develops its own proprietary extensions – Fast execution speed – Access to client libraries • Longer development cycle – Edit, compile, link, debug – Manual memorymanagement 24 Globalization: PHP Unicode + + ICU = 6 • Native Unicode support in 2006 • Collaborative effort – Andrei Zmievski (Yahoo!) – Andi Gutmans (Zend) – Many members of PHP Community 25 26

Related docs
yahoo.php
Views: 0  |  Downloads: 0
Basic PHP Syntax
Views: 538  |  Downloads: 75
Php
Views: 65  |  Downloads: 11
Yahoo Hacks
Views: 249  |  Downloads: 0
AJAX and PHP
Views: 101  |  Downloads: 8
yahoo com maps
Views: 168  |  Downloads: 0
yahoo people search
Views: 53  |  Downloads: 2
PHP and MySQL
Views: 479  |  Downloads: 96
Apache,Mysql and Php an Overview
Views: 168  |  Downloads: 38
about php
Views: 5  |  Downloads: 1
PHP AND AJAX
Views: 485  |  Downloads: 139
php
Views: 2  |  Downloads: 0
premium docs
Other docs by Shariq Bashir
INTRODUCTION TO J2EE
Views: 120  |  Downloads: 16
IntroductionTo.NET for J2EE
Views: 43  |  Downloads: 7
Introduction to J2EE CA
Views: 96  |  Downloads: 24
J2EE Architectural Guidline
Views: 90  |  Downloads: 11
J2ME Introduction Configurations
Views: 106  |  Downloads: 18
J2ME step by step
Views: 405  |  Downloads: 43
Introduction to J2ME and KVM
Views: 79  |  Downloads: 6
J2ME Basics
Views: 191  |  Downloads: 31
Introduction to Gaming with J2ME
Views: 130  |  Downloads: 12
Introduction to J2ME
Views: 194  |  Downloads: 22
Brief Introduction to Secure SMS in MIDP
Views: 388  |  Downloads: 36
Introduction of MMS in J2ME
Views: 182  |  Downloads: 14
XML programming in JAVA
Views: 137  |  Downloads: 17
Java PDF Converter
Views: 104  |  Downloads: 3
Java Basics
Views: 550  |  Downloads: 85