Gå til hovedindhold
Version2 it for professionelle
Forsiden

Hovedmenu

  • It-nyheder
  • Blogs
  • It-job
  • It-firmaer
  • Emner
  • Opret bruger
  • Log ind
Se kommentarer (14)
Emner PHP

Udvikler: Facebooks PHP på steroider er unødvendig

Flaskehalse i PHP-webapplikationer findes ofte andre steder end i motoren. Derfor falder dansk udvikler ikke på halen over Facebooks nye PHP-miljø, der skulle kunne sætte ydelsen i vejret.

Af Tania Andersen Tirsdag, 2. februar 2010 - 6:59

Det forlyder fra flere sider, at Facebook vil præsentere et nyt, højtydende PHP-miljø tirsdag. Men Troels Knak-Nielsen, som er PHP-udvikler i Peytz & Co, kan ikke lige se et stort behov for Facebooks kommende nyskabelse.

Han gætter på, at Facebooks kørselsmiljø bygger på en compiler, der oversætter til "født" kode, som når man kompilerer C. Zend Optimizer, som er et eksisterende produkt til at sætte fut i PHP, fungerer i modsætning hertil ved at gemme den opcode, som PHP-koden kompileres til.

»Den måde, man klarer sig rundt om ydelsesproblemer, er ved at sørge for, at der ikke er nogen tilstand i selve PHP-leddet, så man kan skalere ud på flere servere. Hvis man har en applikation som Facebook, så kan det være dyrt at købe en million nye servere, men for de fleste er det ikke noget problem at købe en ekstra webserver.«

Troels Knak-Nielsen desuden peger på, at der findes mange store applikationer som kører på PHP uden dikkedarer.

»I Wikipedia er det for eksempel ikke PHP, der er flaskehalsen. Der er problemet at få centraliseret data og distribueret dem rundt.«

Hvis man har behov for at optimere ydelsen til en konkret anvendelse, kan man skrive en udvidelse i C. Sådan ville Troels Knak-Nielsen gøre, hvis behovet opstod.

I modsætning til sprog som Python og Ruby har PHP-miljøet formået at holde sig til et enkelt kørselsmiljø, og Troels Knak-Nielsen tror, at det vil det blive ved med.

»Det er interessant, så længe det er nyt, og så vil det nok dø ud igen.«

Det er i øvrigt ikke så nemt at implementere et komplekst sprog som PHP, der gør det muligt at evaluere koden dynamisk.

Send Tweet
Udskriv

IT-job & karriere

  • Se alle it-job
  • Importer din kompetenceprofil fra LinkedIn
Er du ekstrabladet.dk's nye udvikler med fokus på kommentarsystem og brugere?
Udgivet 2. feb 9.21
Udvikler med projektlederkompetencer søges til fast stilling
Udgivet 23. jan 12.37
SAP Supply Chain Management Senior konsulent
Udgivet 13. okt 2011 13.40
Website & Interactive Marketing Coordinator
Udgivet 8. feb 10.28

Kommentarer (14)

Opret en konto eller log ind for at følge indhold på Version2 - og bliv opdateret via e-mail eller rss

Følg kommentarer
Uffe Kousgaard 2. feb. 2010 - 08.14
 
"født" kode

Er det en dårlig oversættelse af "native code" ?

Skriv evt. maskinkode, hvis det absolut skal oversættes.

  • Stem op 0
  • Stem ned 0
  • Log ind eller opret en konto for at skrive kommentarer
Baldur Norddahl 2. feb. 2010 - 11.38
 
Har han forstand på det?

Wikipedia har ca. 350 servere. Det kunne nok spare en del penge med en mere effektiv afvikling af systemet.

Det siges at Facebook har omkring 30.000 servere. Det burde nok kunne betale for lidt optimeringsarbejde.

Man kan antage at Facebook allerede har gjort de tiltag er nævnes i artiklen, men nu ønsker at få det sidste med også.

Selv administrerer jeg et lille website for en forening, som til tider er lidt for langsomt. Hvis Facebook kommer med et nyt PHP kørselsmiljø som jeg nemt kan sætte ind, og få bare en smule længere levetid på serveren, så tager jeg da imod det. Jeg er ikke sikker på at vi har råd til en ny server.

Det største problem ved at oversætte PHP til maskinkode er i øvrigt at det ikke er statisk typet. Det medfører at programmet skal lave langsomme typecheck på kørselstidspunktet i stedet for i oversættelsesfasen.

  • Stem op 0
  • Stem ned 0
  • Log ind eller opret en konto for at skrive kommentarer
Rasmus Kaae 2. feb. 2010 - 11.45
 
"maskinkode"

"maskinekode" er vel heller ikke passende, "platform specifik kode" vil imho. være mere passende.

  • Stem op 0
  • Stem ned 0
  • Log ind eller opret en konto for at skrive kommentarer
Rasmus Morten Helbig Hansen 2. feb. 2010 - 12.00
 
Løs snak
Det er i øvrigt ikke så nemt at implementere et komplekst sprog som PHP, der gør det muligt at evaluere koden dynamisk.

Oversætter jeg til "PHP er noget proprietært skudder mudder, som nok er udviklet organisk og mangler en egentlig grammatik"

  • Stem op 0
  • Stem ned 0
  • Log ind eller opret en konto for at skrive kommentarer
Rasmus Morten Helbig Hansen 2. feb. 2010 - 12.08
 
Re: Har han forstand på det?

Umiddelbart virker Troels Knak-Nielsens udtalelser som noget tynde. Facebook benytter svjv en distribueret database (Cassandra), så udtalelsen omkring wikimedias opsætning virker umiddelbart lidt malplaceret.

Man kan vel heller ikke forvente at en tilfældig, gennemsnitlig kodekarl kan give en særlig detaljeret analyse af noget som nok er i nærheden af at være verdens største website.

  • Stem op 0
  • Stem ned 0
  • Log ind eller opret en konto for at skrive kommentarer
Ulrik Hvide 2. feb. 2010 - 12.11
 
Re: Har han forstand på det?

Kan kun være helt enig med Baldur Norddahl, alle forbedringer af et programmeringssprog er velkomne, men personligt så jeg hellere at Facebook og The PHP Group arbejdede sammen om at forbedre den kommende PHP 6.0 end at vi skal til at installere forskellige extensions (om de hedder Zend eller Face).

  • Stem op 0
  • Stem ned 0
  • Log ind eller opret en konto for at skrive kommentarer
Peter Makholms billede
Peter Makholm 2. feb. 2010 - 12.14
 
Re: Løs snak

Nej, den konkrete kommentar virker på mig mest til at PHP inkluderer en eval() funktion der gør det muligt dynamsik at generere kode og få det udført i samme process.

Det har hverken noget med om PHP er proprietært, "skudder mudder", organisk udviklet eller mangler en velbeskrevet grammatik.

  • Stem op 0
  • Stem ned 0
  • Log ind eller opret en konto for at skrive kommentarer
Rasmus Morten Helbig Hansen 2. feb. 2010 - 12.24
 
Re: Løs snak

Det var nu mest ordet "komplekst" som fik mit knæ til at spjætte.

En eval konstruktion er vel heller ikke det værste man kan komme ud for.

  • Stem op 0
  • Stem ned 0
  • Log ind eller opret en konto for at skrive kommentarer
Anders Kvist 2. feb. 2010 - 13.59
 
Re: Har han forstand på det?

Har du en PHP cache på webserveren? Ellers kan du vinde rimeligt godt på f.eks. APC som jeg har rigtigt gode erfaringer med fra mit arbejde. Der findes også Eaccelerator som faktisk er en smule mere effektiv end APC, men den har jeg haft nogle stabilitetsproblemer med...

Jeg har selv et webcluster med 20 webservere som stort set kun leverer PHP. Der fik jeg halveret load ved at bruge en PHP cache...hvis man kan vinde mere ved lidt flere ændringer er det da sejt, men jeg vil nok kun benytte det så fremt PHP selv accepterer ændringerne og releaser dem.

/Anders

  • Stem op 0
  • Stem ned 0
  • Log ind eller opret en konto for at skrive kommentarer
Jacob Christian Munch-Andersen 2. feb. 2010 - 17.35
 
Re: Har han forstand på det?
personligt så jeg hellere at Facebook og The PHP Group arbejdede sammen om at forbedre den kommende PHP 6.0

Målene er nok for forskellige til at det er realistisk. PHP 6.0 har fokus på nye features, Facebook skal bruge ydelse, og har muligvis valgt slet ikke at implementere store dele af PHP 5.3. Men det er jo fint muligt at Facebook i fremtiden vil implementere PHP 6.

En eval konstruktion er vel heller ikke det værste man kan komme ud for.

Fra et compiler synspunkt er det faktisk ret eksakt det værste man kan komme ud for. Der skal implementeres en hel virtuel maskine og namespacet skal bevares og kunne udvides. Det kan lade sig gøre, men det er en kæmpe mængde ekstra arbejde.

  • Stem op 0
  • Stem ned 0
  • Log ind eller opret en konto for at skrive kommentarer
Baldur Norddahl 2. feb. 2010 - 17.56
 
Re: Har han forstand på det?
[quote]En eval konstruktion er vel heller ikke det værste man kan komme ud for.

Fra et compiler synspunkt er det faktisk ret eksakt det værste man kan komme ud for. Der skal implementeres en hel virtuel maskine og namespacet skal bevares og kunne udvides. Det kan lade sig gøre, men det er en kæmpe mængde ekstra arbejde[/quote]
Antag du vil implementere eval for sproget C på en Unix maskine.

Eval funktionen skriver sit argument til en temp fil, for eksempel /tmp/eval.c. Derefter kaldes "gcc" compileren. Sidst hentes resultatet ind med systemkaldet dlopen.

Jeg kan nok komme i tanke om værre ting at implementere :-).

  • Stem op 0
  • Stem ned 0
  • Log ind eller opret en konto for at skrive kommentarer
Christian Melchior 2. feb. 2010 - 18.21
 
Re: Har han forstand på det?
Eval funktionen skriver sit argument til en temp fil, for eksempel /tmp/eval.c. Derefter kaldes "gcc" compileren. Sidst hentes resultatet ind med systemkaldet dlopen.

Så vidt jeg ved eksekvere PHP eval i det scope den befinder sig i, hvilket betyder at den fremgangsmåde ikke er særlig realistisk. Der er en grund til at man normalt går i en stor bue uden om eval-funktioner når der snakkes statisk analyse :)

  • Stem op 0
  • Stem ned 0
  • Log ind eller opret en konto for at skrive kommentarer
Baldur Norddahl 2. feb. 2010 - 21.33
 
Re: Har han forstand på det?

Det vil ikke tage meget at forbedre metoden til også at virke med variabler i samme scope. Det kræver dog lidt hjælp fra oversætteren. Metoden giver allerede adgang til globale variabler. For at give adgang til lokale variabler, så skal oversætteren af eval blokken have en reference til et kort over stakken i den kaldende funktion. F.eks. LLVM indeholder metoder til at lave den slags kort over stakken.

  • Stem op 0
  • Stem ned 0
  • Log ind eller opret en konto for at skrive kommentarer
Rasmus Morten Helbig Hansen 2. feb. 2010 - 23.03
 
Re: Har han forstand på det?
Troels Knak-Nielsen desuden peger på, at der findes mange store applikationer som kører på PHP uden dikkedarer.

Ganske givet rigtigt, men ikke nødvendigvis relevant ifht spørgsmålet omkring Facebook's PHP.

»I Wikipedia er det for eksempel ikke PHP, der er flaskehalsen. Der er problemet at få centraliseret data og distribueret dem rundt.«

Wikimedia benytter MySQL i clusters med yderligere caching af forespørgsler, så vidt jeg husker. Facebook benytter Cassandra, som nok skalerer langt nemmere. Argumentationen er ikke relevant.

Hvis man har behov for at optimere ydelsen til en konkret anvendelse, kan man skrive en udvidelse i C. Sådan ville Troels Knak-Nielsen gøre, hvis behovet opstod.

De fleste kigger forhåbentlig andre steder førend de tyr til C. Umiddelbart mener jeg også at Donald Knuth er enig.

I modsætning til sprog som Python og Ruby har PHP-miljøet formået at holde sig til et enkelt kørselsmiljø, og Troels Knak-Nielsen tror, at det vil det blive ved med. »Det er interessant, så længe det er nyt, og så vil det nok dø ud igen.« Det er i øvrigt ikke så nemt at implementere et komplekst sprog som PHP, der gør det muligt at evaluere koden dynamisk.

Der er i denne kontekst intet som angiver at "ikke så nemt at implementere" betyder statisk oversættelse. Uanset dette, vil jeg stadig fastholde at det er sværere at oversætte et svagt dokumenteret og unødigt kompliceret sprog end at implementere en eval konstruktion.

Men som Baldur skriver: Oversætteren ved jo godt, hvor der findes en eval blok. Det er ikke svært at lave et "symbol map" til brug ved udførelse af eval blokken. Nemmere end så meget andet. Nemmere end at skrive en PHP oversætter.

  • Stem op 0
  • Stem ned 0
  • Log ind eller opret en konto for at skrive kommentarer

Tilføj kommentar

Opret en konto eller log ind for at følge indhold på Version2 - og bliv opdateret via e-mail eller rss

Følg kommentarer
Log ind herunder eller opret en bruger for at skrive kommentarer
Du kan logge ind med din e-mail-adresse
Der er forskel på store og små bogstaver i adgangskoden.
Glemt adgangskode?

Seneste nyt

Domæne-forening: Lov om .aarhus og .cph var for tynd

Udgivet 8. feb 16.16Opdateret 8. feb 16.16

Sygeplejerskers dobbeltindtastning af data bliver til 12,5 mio. timer ved pc'en årligt

Udgivet 8. feb 15.45Opdateret 8. feb 15.45

Dansk spil-indmad i LG's nye tv-apparater

Udgivet 8. feb 15.06Opdateret 8. feb 15.06

TDC fyrer CSC

Udgivet 8. feb 14.26Opdateret 8. feb 15.10

Version2's læsere forudså Polsag-kollaps

Udgivet 8. feb 13.48Opdateret 8. feb 13.48
Flere it-nyheder »
Få it-nyheder og blogs hver dag med Version2's nyhedsbrev.

Seneste debat

  1. XBMC på fit-PC3

    18 comments.
    Last update 1 time 18 minutter
    Skrevet af Peter Toft
  2. Anonyme kilder tæt på Polsag: Derfor gik det helt galt

    23 comments.
    Last update 2 timer 6 minutter
    Skrevet af Nikolaj Brinch Jørgensen
  3. Stop SOPA, PIPA, ACTA, TPP og alle dem der kommer efter

    34 comments.
    Last update 2 timer 42 minutter
    Skrevet af Nikolaj Brinch Jørgensen
  4. Nyt værktøj knækker diskkryptering på Mac og Windows på under én time

    6 comments.
    Last update 2 timer 55 minutter
    Skrevet af Thomas Bundgaard
  5. 500.000.000.000 kr. for Facebook er ikke dyrt

    10 comments.
    Last update 2 timer 58 minutter
    Skrevet af Nikolaj Brinch Jørgensen
  6. SF'er til ACTA-kritikere: Jeg har vundet kampen for jer

    23 comments.
    Last update 3 timer 44 minutter
    Skrevet af Peter Makholm
  7. Sygeplejerskers dobbeltindtastning af data bliver til 12,5 mio. timer ved pc'en årligt

    3 comments.
    Last update 3 timer 51 minutter
    Skrevet af Thomas Hansen
  8. It-advokat: Nu går grænsebommene ned over internettet

    2 comments.
    Last update 4 timer 28 minutter
    Skrevet af Peter Mogensen
Mere debat »

Information

  • Kontakt redaktionen
  • Job- og annoncesalg
  • Teknisk support
  • Om Version2
  • Brugerbetingelser
  • Privatlivspolitik

Aktuelle emner

  • Agil udvikling
  • Android
  • Bruttolønsordning
  • Business Intelligence
  • Cloud computing
  • Digitaliseringsstyrelsen
  • HTML5
  • Harddisk-priser
  • IE9
  • Intranet
  • It-sikkerhed
  • Kindle Fire
  • Multimedieskat
  • NemID
  • OS X Lion
  • Open source CMS
  • Projektledelse
  • Scrum
  • Sharepoint intranet
  • Storage
  • Ubuntu 11.10
  • Virtualisering
  • Windows 8
  • Windows Phone 7
  • iOS 5
  • iPhone 4S

Tjenester

  • Android-app
  • iPhone-app
  • RSS-feeds
Følg @version2dk
Få it-nyheder og blogs hver dag med Version2's nyhedsbrev.

Version2 udgives af

  • Mediehuset Ingeniøren A/S work Skelbækgade 4 1717 København V
  • Tlf. work 33265300