<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>sw4 Stefan Wild &#187; facebook</title>
	<atom:link href="http://sw4.de/tag/facebook/feed/" rel="self" type="application/rss+xml" />
	<link>http://sw4.de</link>
	<description>digitale Kommunikation</description>
	<lastBuildDate>Fri, 27 May 2011 10:30:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>HipHop macht aus PHP Quellcode C++</title>
		<link>http://sw4.de/2010/02/hiphop-macht-aus-php-quellcode-c/</link>
		<comments>http://sw4.de/2010/02/hiphop-macht-aus-php-quellcode-c/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 07:58:12 +0000</pubDate>
		<dc:creator>Stefan Wild</dc:creator>
				<category><![CDATA[Technik]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[hiphop]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.sw4.de/?p=335</guid>
		<description><![CDATA[HipHop for PHP heißt die Technologie, die von einem Facebook Team in den letzten Monaten entwickelt wurde. Heute früh wurde sie der Öffentlichkeit präsentiert. Die Gründe, einen solchen Aufwand zu betreiben, um PHP schneller ausführen zu können, liegen für Facebook auf der Hand. PHP ist leicht zu erlernen und zu nutzen, neuer Code kann schnell [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://developers.facebook.com/news.php?blog=1&amp;story=358">HipHop for PHP</a> heißt die Technologie, die von einem Facebook Team in den letzten Monaten entwickelt wurde. Heute früh wurde sie der Öffentlichkeit präsentiert. Die Gründe, einen solchen Aufwand zu betreiben, um PHP schneller ausführen zu können, liegen für Facebook auf der Hand. PHP ist leicht zu erlernen und zu nutzen, neuer Code kann schnell aufgebaut und auch wieder überarbeitet werden, auch der Einstieg für neue Mitarbeiter ist unproblematisch. Desweiteren besteht Facebook bereits aus über einer Million Zeilen PHP.</p>
<p><span id="more-335"></span></p>
<p>Die Probleme mit PHP liegen jedoch ebenso auf der Hand. Da PHP eine interpretierte Scriptsprache ist, erzeugt es eine hohe Last auf CPU und Speicher. Trotzdem soll die Applikationslogik (bei Facebook ebenfalls in PHP geschrieben) einfach wieder zu verwenden sein. Der Lösungsansatz, Kernkomponenten der Applikation als PHP Extensions in C++ (oder mit Schnittstellen in einer anderen Sprache) zu schreiben, ist damit nicht praktikabel, zumal die Entwickler dafür eine Menge mehr Know-How mitbringen müssen. Denn für die PHP Extension Entwicklung sind weitere Kenntnisse in C++ und in der PHP API nötig.</p>
<p>Als Lösung hat Facebook PHPHipHop entwickelt, das es ermöglicht, PHP Quellcode in C++ Quellcode zu transformieren und dann in Maschinencode zu kompilieren (hierfür wird bei Facebook g++ eingesetzt). Die CPU Last auf den Webservern ist dabei um 50% niedriger bei gleichem Traffic, bei API Anfragen sind es 30% weniger CPU Last bei doppeltem Traffic. Diese Messungen stammen aus dem Facebook Produktivbetrieb – PHPHipHop ist dort bereits seit sechs Monaten im Einsatz und verarbeitet etwa 90% aller Zugriffe.</p>
<p>Viel Aufmerksamkeit hat das Team um <a href="http://www.facebook.com/hzhao">Haiping Zhao</a> typisierten Variablen gewidmet. Durch Eingrenzung der genutzten PHP Variablen auf skalare C++ Typen ist der größte Performancegewinn gelungen. Einige seltener genutzte Features (wie z.B. die Funktion eval() ) der dynamischen Skriptsprache konnten nicht übertragen werden.</p>
<p>Für die Entwicklung gibt es außerdem einen experimentellen Interpreter namens HPHPi, mit dem sich die Transformationen im Entwicklungsprozess testen lassen, bevor neuer Code kompiliert und produktiv eingesetzt wird.</p>
<p>Einen festen Zeitplan (&#8220;soon&#8221;) gibt es nicht, die nächsten Schritte bis zur Veröffentlichung von HipHop stehen aber fest:</p>
<ul>
<li>Momentan ist PHPHipHop kompatibel mit PHP Version 5.2, Unterstützung für Version 5.3 soll als nächstes folgen.</li>
<li>Da Facebook auch einen eigenen HTTP Server auf libevent Basis geschrieben und auf PHPHipHop angepasst hat, wird noch an einer Lösung gearbeitet, Webserver wie Apache und nginx (voraussichtlich per fcgi) mit PHPHipHop zu nutzen.</li>
</ul>
<p><object id="utv641082" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="386" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="name" value="utv_n_169924" /><param name="flashvars" value="autoplay=false" /><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.ustream.tv/flash/video/4409735" /><embed id="utv641082" type="application/x-shockwave-flash" width="480" height="386" src="http://www.ustream.tv/flash/video/4409735" allowscriptaccess="always" allowfullscreen="true" flashvars="autoplay=false" name="utv_n_169924"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://sw4.de/2010/02/hiphop-macht-aus-php-quellcode-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.208 seconds -->

