260 likes | 357 Views
ZendCon 2008. Or: How I learned to stop worrying and love the PHP. Keynote. Many companies replacing Java with PHP Zero9 Orange UK (Telecom) BNP Paribas (French Bank) IGN Yahoo DFW Airport. New stuff from Zend Framework Cert. AppCelerator Magento(ecommerce) Zend Studio 6.1
E N D
ZendCon 2008 Or: How I learned to stop worrying and love the PHP.
Keynote • Many companies replacing Java with PHP • Zero9 • Orange UK (Telecom) • BNP Paribas (French Bank) • IGN • Yahoo • DFW Airport
New stuff from Zend Framework Cert. AppCelerator Magento(ecommerce) Zend Studio 6.1 Partnership w/ Adobe Adobe => Flex Zend Studio PHPUnit (testing) Flex AMF (Flash ActionScript) Dojo (javascript components/widgets)
Join-Fu • Slides in X drive
Analysis @ Ning • Tools • Oprofile • Dtrace extension • System tap • www.sklar.com/blog/ • Slides on X:
PECL Picks (PHP Extens.) • Opcode Caching • APC • Memcached • Image Manipulation • Imagick • Curl Replacement • Pecl_Http • Upload Progress - UploadProgress
PDF – PDF, Haru • Version Control – svn • Database – PDO*, PDO_User (netezza?) • I18n – Translit • Diffs – xdiff • Search – Sphinx • Doing “bad” things • Runkit, funcall, intercept, operator • Type Hinting – spl_types • Params - params
Debugging – Xdebug • Language Embedding • Java, Lua, Perl, Python • Other • Ssh2 • AMF • Elizabethmariesmith.com • Slides on X:
Knight Rider Methodology • Eli White • Tripadvisor, travelpod, eliw.com • All about the tools • Editor – notepad, studio, ide, etc… • Profiling – APD, wincachegrind, webgrind, xdebug • Load testing – http_load, siege, apachebench
Performance – APC, memcached, gearman (batch processing) • Code Libraries – Pecl, pear, js – jquery etc • Debugging – xdebug, dbg, zstudio, apd, firebug, dev toolbar • Testing – simpletest, phpt, phpunit, selenium (js) • Multi-tier servers – Dev, Integration, Testing, Staging, Production • Errors – E_ALL && E_STRICT
Version Control – SVN, CVS, GIT • Lint (suspicious code) – php –l, phplint • Code Sniff – check coding standards • GUIs – DB – aqua data studio, squirrelsql; version control – subcommander, smartsvn • Little things (commands) – rsync, grep, find, sed, cut • Hardware – acquire what will help • Social networking – Community!
Zend Studio Secrets • F-Keys • Ctrl-f8 = switch persepctives • Ctrl-f7 = switch panes • Ctrl-f6 = switch files, alt-left, alt-right • Ctrl-m = max/minimize panes • Ctrl-l = show shortcuts • Ctrl-r = open file • Ctrl-k = show next find • Can be config’d to show white space • Wizards – PHPUnit
Rich UIs w/ ZF + Dojo • Webinar @ http://www.zend.com/en/resources/webinars/ • Matthew Weier O’Phinney
Keynote Wednesday • Magento • OOP • Zend Framework • 170 Extensions • Powering Poster.com, fiesta bowl • Modular, flexible • Connect – extension site • Customize user experience • Iphone optimized • Layered Navigation • Ratings, reviews, tags, feeds • Call center functionality • Promotion engine
ZF – Less Training • NewBSD License • Design packages (themes) • Pear channel • SOAP, XMLRPC APIs
Web Services w/ Z Frame. • Matthew Turling – ishouldbecoding.com • HTTP_Auth • Zend_Server_Interface • Zend_Server_Reflection • Zend_Server_Abstract • REST • Zend_Rest_Server – not ideal • Zend_Rest_Client • Book: Restufl web services, isbn: 059652…
Controller • contextSwitchHelper • Content Negotiation • XMLRPC • Zend_XmlRpc_Server, _Request, _Response, _Server_Fault, _Server_Cache (not ready), _Client, _Client_Serverproxy (allows xmlrpc as native php object) • Boxcarring – allow multiple calls on single request • JSON-RPC • Zend_Json_Server, _Server_smd, _Server_Request, _Server_error • SOAP • Zend_Soap_Server • Verbose, enumerators, complex, namespaces, user-defined data types
RIA w/ ZF + Flex + Air • John Coggeshall – Automotive Computer Services • Air – Allows access to local services on client • Zend Studio • Flex Builder Plugin • Log_Watcher plugin • Adobe Actionscript3 + Flex w/ PureMVC extension (puremvc.org)
Enterprise PHP • Ivo Jansch • Know customer wants vs needs • Wireframes – Axure (www.axure.com) $500 for 5 seats • CruiseControl, PHPUnderControl
Scaling Mozilla’s Websites • Laura Thomson • Mozilla.com runs on Drupal • Services – Bouncer (load balancing) • Addons.mozilla.com = “AMO” • 72M hits, 4M page views, 1M user sessions • Runs on CakePHP • Infrastructure • 3 datacenters (San Jose, Amsterdam, China) • Net Scaler hardware (Citrix) • Web Servers -> memcached, db cluster (my,pg) • 12 nodes each for static, dynamic
Scaling SUMO (support.mozilla.org) • KB, Forum, wiki (tikiwiki) • Initially only 5 reqs/second • Architecture analysis • Load Tests • Profiling (xdebug + kcachegrind) • 270 Queries / page load! • Reduce includes • Now up to 12 reqs/second • DB • Caching, move to innodb • Fix slow queries, add indexes • Now down to 19 queries/page • Duplication – Send selects to slaves, other to master • Logic to make post-update selects on master • Memcached – Whole-page, sessions
Scaling SUMO contd. • Use cron jobs instead of rolling up on certain pages • Load Testing (now at 22 reqs/sec) • Millenium • Log replay • https://svn.mozilla.org/projects/webtest • Peak Download Day Stats • 14Gb/s • 2Gb/s web traffic • 300x spike • Turned off AMO to help • One net scaler failed
Testing With Selenium • Stefan Priebsch • Testing – Unit, system, acceptance, integration, performance, load, usability, security • Selenium IDE – ide.openqa.org – firefox plugin • Assertions • Plugins • Selenium RC – Remote control, selenium-rc.openqa.org • PHPUnit integration • PHPUnit_Extensions_selenium_testcase (can set up using xvfb) • Can be fired via Cruisecontrol (phpUnderControl for mgmt), Continuum, Xinc • Virtual Machines – Snapshot mgmt • Side note – Red hat switching to KVM from XEN.
Scaling PHP Application • Maurice Kherlakian – Bell Canada • Scalability • Performance vs High Availability • Load Balancers – Soft vs hardware • Session Persistence – Sticky, Sharing (memcached), Session Clusting in Z. Platform • Synchronization – Rsync –avz • Static Content Separation • Memory consumption • Use low-memory http server (lighttpd, thttpd) or cdn
Database • Master-slave, dual master, replication • DRDB = master-slave, HA, no perf gain • Mysql cluster • Partitioning, sharding • Tools – mysql_sla, slow query log, monyog • Code Acceleration • XCache, APC, eAccelerator, Zend Platform • DB Requests • HTML Caching • Client side – etags, expire headers • Code Design • Standards, Zend Framework • Plan Plan Plan! • Ensure Compatibility
Final Keynote • Mark deVisser – American Cancer Society • Social network for cancer stories • www.sharinghope.tv • VMIX for video back end • “Code Against Cancer” requesting help