PHP and Facebook
PHP and Facebook
In a previous post titled "The Spirit of Openness," Steven Grimm wrote about the various open source projects we use and contribute to at Facebook. We wanted to give everyone some "down and dirty" details on a couple of those projects, specifically relating to the PHP community.
You might have noticed that the user-facing portion of Facebook is written in PHP, and we're fortunate enough to be able to make contributions back to some PHP related projects. Most of our contributions (so far) have been towards an optimization extension called the Alternative PHP Cache (APC). Some of this code includes faster locking mechanisms like Futex locks, POSIX mutex locks, and porting spin locks from the PostgreSQL project. Some changes are bug fixes rather than enhancements, like bug #7816 and #8663 (a configuration and file update bug which never really affected Facebook directly, but we're happy to help).
We've added new caching statistics to help engineers learn what's being effectively cached and what's not. Our own opcode copy optimizations significantly cut down Facebook load and response time last month. We also added multi-key fetches, faster statistics, and a cool apc_compile_file function. We get to sneak in occasional patches to other PHP related projects like a PHP foreach bug, a "script" option for xdebug, and PHP-5.2 compatibility for APD. These changes cut down on the number of bugs engineers have to deal with, and give them new functionality for measuring site performance.
When site performance and technology is core to what you do, like it is at Facebook, having control over changes of every aspect of the site is crucial. Facebook runs with some modifications to projects like PHP that aren't stable or generic enough for inclusion in a public release (although we do our best to make these available). Having people available that work on programming languages, caches, or storage facilities gives Facebook a distinct edge over other sites that aren't as concerned about end user experience or being part of an open source community.
If you're interested in more information on open source projects, check out ohloh.net. You can see statistics on APC and PHP as well as many other projects like memcached, another project we are proud to contribute to. There are many people that come together to make these projects a reality, and it's awesome to be part of something that affects so many people. Getting involved in open source projects is a great way to learn and become part of a larger community. Finding a company that understands this as well is even better.
Brian Shire, an engineer at Facebook, is working on fixing some PHP bugs.
You might have noticed that the user-facing portion of Facebook is written in PHP, and we're fortunate enough to be able to make contributions back to some PHP related projects. Most of our contributions (so far) have been towards an optimization extension called the Alternative PHP Cache (APC). Some of this code includes faster locking mechanisms like Futex locks, POSIX mutex locks, and porting spin locks from the PostgreSQL project. Some changes are bug fixes rather than enhancements, like bug #7816 and #8663 (a configuration and file update bug which never really affected Facebook directly, but we're happy to help).
We've added new caching statistics to help engineers learn what's being effectively cached and what's not. Our own opcode copy optimizations significantly cut down Facebook load and response time last month. We also added multi-key fetches, faster statistics, and a cool apc_compile_file function. We get to sneak in occasional patches to other PHP related projects like a PHP foreach bug, a "script" option for xdebug, and PHP-5.2 compatibility for APD. These changes cut down on the number of bugs engineers have to deal with, and give them new functionality for measuring site performance.
When site performance and technology is core to what you do, like it is at Facebook, having control over changes of every aspect of the site is crucial. Facebook runs with some modifications to projects like PHP that aren't stable or generic enough for inclusion in a public release (although we do our best to make these available). Having people available that work on programming languages, caches, or storage facilities gives Facebook a distinct edge over other sites that aren't as concerned about end user experience or being part of an open source community.
If you're interested in more information on open source projects, check out ohloh.net. You can see statistics on APC and PHP as well as many other projects like memcached, another project we are proud to contribute to. There are many people that come together to make these projects a reality, and it's awesome to be part of something that affects so many people. Getting involved in open source projects is a great way to learn and become part of a larger community. Finding a company that understands this as well is even better.
Brian Shire, an engineer at Facebook, is working on fixing some PHP bugs.
Most Popular Stories
المفضلة للفيسبوك
المواد المؤرشفة بناءً على الموضوع
Abuse (3)
Advertising (4)
Applications (12)
Chat (3)
Comments (2)
Credits (1)
Data Centers (1)
Education (2)
Events (2)
Facebook Tips (5)
Family (1)
Fan Box (1)
fbFund (1)
Filters (1)
Friend Lists (3)
Friends Page (1)
Games (3)
Gifts (4)
Groups (6)
Growth (7)
Guest blog (23)
Hackathon (2)
Help Center (1)
Home Page (1)
Inbox (1)
Language (7)
Live Feed (5)
Marketplace (1)
Memology (1)
Mobile (3)
Music (3)
News Feed (13)
Notifications (5)
Pages (21)
Parents (6)
Payments (2)
Phishing (2)
Photos (5)
Platform (6)
Privacy (15)
Prototypes (1)
Publisher (3)
Relationships (1)
Religion (1)
Research (4)
Safety (2)
Search (4)
Security (8)
Share (1)
Spam (3)
Sports (1)
Status Updates (5)
Suggestions (2)
Tagging (1)
Television (1)
Toolbar (1)
Translation (5)
Username (2)
Video (1)
Your Stories (12)
المنشورات المؤرشفة بحسب التاريخ
2010
فبراير (6)
يناير (11)
2009
ديسمبر (14)
نوفمبر (12)
أكتوبر (17)
سبتمبر (10)
أغسطس (10)
يوليو (10)
يونيو (13)
مايو (13)
أبريل (13)
مارس (14)
فبراير (13)
يناير (8)
2008
ديسمبر (15)
نوفمبر (14)
أكتوبر (12)
سبتمبر (9)
أغسطس (2)
يوليو (3)
يونيو (6)
مايو (5)
أبريل (6)
مارس (2)
فبراير (4)
يناير (3)
2007
ديسمبر (4)
نوفمبر (4)
أكتوبر (1)
سبتمبر (3)
أغسطس (4)
يوليو (4)
يونيو (2)
مايو (5)
أبريل (9)
مارس (8)
فبراير (7)
يناير (4)
2006
ديسمبر (3)
نوفمبر (6)
أكتوبر (5)
سبتمبر (7)
أغسطس (4)
المنشورات المؤرشفة بحسب Blogger
Abraham Cooper (1)
Adam Conner (4)
Adam Hupp (1)
Aditya Agarwal (2)
Akhil Wable (1)
Alex Moskalyuk (1)
Ana Muller (1)
Annie Ta (2)
Ari Steinberg (2)
Arjun Banker (1)
Austin Haugen (1)
Barry Schnitt (1)
Benjamin Ling (1)
Blair Heuer (1)
Blake Chandlee (1)
Bo Hong Deng (1)
Bob Trahan (2)
Brian Shire (1)
Brynn Shepherd (1)
Cameron Marlow (1)
Carolyn Abram (11)
Casi Lumbra (1)
Cat Lee (3)
Chad Little (2)
Chengos Lim (1)
Chris Cox (2)
Chris Hughes (2)
Chris Kelly (4)
Chris Putnam (4)
Chris Ward (1)
Craig Donato (1)
Dan Rose (1)
Daniel Chai (1)
Danna Gutman (1)
Dave Fetterman (1)
Dave Morin (1)
Doug Beaver (2)
Elliot Schrage (2)
Eric Kwan (2)
Eric Zamore (1)
Ethan Beard (1)
Evan Priestley (1)
Ezra Callahan (8)
Florin Ratiu (1)
Gareth Davis (1)
Gene Fant (1)
Ghassan Haddad (1)
Gibson Biddle (1)
Graeme Menzies (1)
Greg Badros (1)
Jack Lindamood (1)
Jackie Kong (1)
Jake Brill (2)
James Wang (2)
Jared Cohen (1)
Jason Min (2)
Jason Sobel (1)
Jeff Kanter (1)
Jeff Williams (1)
Jesse Dwyer (1)
Jimmy Lavoie (1)
Jing Chen (1)
Joanna Lee (1)
Joe Green (1)
Joe Hewitt (3)
Joe Sullivan (1)
Jon Fougner (2)
Jon Warman (2)
Jonathan Hsu (1)
Josh Elman (1)
Josh Wiseman (2)
Julie Trescott (1)
Julie Zhuo (2)
Justin Bishop (1)
KC Estenson (1)
Kari Lee (1)
Kate Losse (3)
Kathy H. Chan (4)
Katie Carter (2)
Katie Geminder (6)
Kevin Arata (1)
Kevin Der (1)
Lars Backstrom (1)
Leah Pearlman (5)
Lee Byron (1)
Liz Perle (1)
Luke Shepard (1)
Malorie Lucich (2)
Mark Kinsey (2)
Mark Slee (9)
Mark Zuckerberg (20)
Matt Cahill (1)
Max Kelly (3)
Mike Honda (1)
Naomi Gleit (4)
Natalie Minor (1)
Nico Vera (3)
Paul Janzer (1)
Paul McDonald (1)
Pedram Keyani (1)
Pete Bratach (1)
Peter X. Deng (2)
Philip Fung (3)
Prashant Malik (1)
Raylene Yung (1)
Richard Allan (2)
Rob Goodlatte (1)
Robert Johnson (1)
Roddy Lindsay (2)
Ruchi Sanghvi (2)
Ryan McGeehan (3)
Sam O'Rourke (1)
Sameer Moidu (1)
Sara Lannin (7)
Sasha Rosse (1)
Scott Marlette (1)
Scott Mills (1)
Shaun King (1)
Simon Axten (3)
Sophia Huang (1)
Steven Grimm (1)
Suzie White (1)
Ted Ullyot (1)
Tim Sparapani (2)
Tom Occhino (1)
Tom Whitnah (5)
Victor Valdez (1)
Wayne Chang (3)
Will Chen (3)
Will Gardner (1)
Xenia Nosov (1)
Yair Landau (1)
Yishan Wong (2)

