Større projekt, valg af framework

Tags:    php

Hej udviklerer,

Jeg er i gang med et større community-projekt, som jeg har store forhåbninger til.
For at gøre bedømmelsen af løsninger lidt nemmere, vil jeg kort ridse nogle af målene op;

Features:
1 | Community del
1.1 | Forum
1.2 | Bruger profil
1.3 | Fotoalbum
1.4 | Bruger blogs

2 | Artikler
2.1 | Bunkevis af artikler
2.2 | Skal kunne redigeres af brugere (wiki-lignende)

I fremtiden skal siden sandsynligvis gøres multisproget, så denne funktion skal også tages med i overvejelse af framework.

Men mit problem er valget af Framework - eller nok snarere et luksusproblem. Jeg står lidt på en skillevej imellem Zend og Codeigniter.

Jeg vægter hastighed og sikkerhed allerhøjest, og har hørt at CI skulle være det hurtigste, men ved ikke med sikkerheden? - Og hvordan forholder det sig hvis det er MEGET store projekter - kan Codeigniter så stadig følge med Zend?

En anden mulighed er JSP løsning, hvor mange kan anbefale det fremfor PHP med Framework?

Til allersidst har jeg ladet mig fortælle, at hvis man virkelig skal have farten op på en php applikation, så skal man blandet det med noget C++ som de bl.a. gør på Yahoo? - Er det hovedsageligt rettet imod hjemmesider på størrelse med Yahoo og Facebook f.eks, eller vil der være nogen fornuft i at gøre det alligevel?

Jeg håber at få nogle gode svar, og kunne godt tænke mig at vi holder os til fakta og holder "religion" udenfor. Den eneste religion jeg forholder mig til her er, at jeg udelukker brugen af .NET :)

Men fyr løs, glæder mig til at få nogle råd!

Med venlig hilsen
Mark Andreasen



2 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 4 karma
Sorter efter stemmer Sorter efter dato
CodeIgniter har ingen problemer med sikkerheden. Fx er der mulighed for at køre sessions igennem databasen, og så er der indbygget XSS-filter du kan aktivere/deaktivere til at køre globalt på alt input, hvis du virkelig har brug for det. Du kan også kalde input->xss_clean() direkte på almindelige strenge, bare for at være helt sikker.

CodeIgniter kan sagtens følge med Zend også i store miljøer. Firmaet der laver CodeIgniter, Ellislab, baserer deres nyeste version af deres kommercielle CMS, ExpressionEngine, på CodeIgniter. ExpressionEngine er en stor forretning for mange mennesker. Kig eventuelt på expressionengine.com

Udviklingen i CodeIgniter er også meget drevet af portabilitet, bagudkompatibilitet og stabilitet. Du vil derfor finde at din applikation kan køre på stortset alt, uden at gå ned. Til gengæld benytter CodeIgniter ikke nogen PHP5-only features i sin kerne - men der er rig mulighed for at din egen applikation kan gøre det.

En ting du dog skal være opmærksom på hvad angår CodeIgniter er at mange ting i dens kerne er så basale, at du i mange tilfælde skal extende kerne-librariesne for at opnå den funktionalitet du vil have. Det er både godt og skidt - CodeIgniter tager ingen valg for dig, men til gengæld skal du tænke mere selv. Du kan med fordel tjekke mange af de 3.parts libraries der bliver lavet derude, ud. Blandt andet er der det template-library en CI-guru ved navn Philip Sturgeon har skrevet -- han har blandt andet talt på CodeIgniter-konferencen EECI.

EDIT:
Hvad angår hastighed med PHP er der en række ting du kan gøre. Først og fremmest kan du køre med Lighttpd+FastCGI istedet for Apache med mod_php, der drastisk øger hastigheden på sites - dog er url-rewriting fremgangsmåden lidt anderledes.

Dernæst kan du installere en opcode cache, fx Zend Optimizer, xCache, eAccelerator eller lignende. På arbejdet bruger vi xCache, men privat bruger jeg eAccelerator, og begge dele giver gode resultater.

Derudover skal du nok køre noget loadbalancing mellem flere servere, og have en central NFS/Database-server som de alle sammen snakker med.

Du vil nok også få meget ud af en reverse proxy, fx det danske Varnish, til at levere det statiske indhold(billeder, css etc.) ekstremt hurtigt, så webserverne kun skal tænke på at levere det dynamiske indhold(PHP-koden).

Intern caching i PHP-koden af data kan med fordel køres via memcache eller lignende (der findes 3.parts libraries til CodeIgniter til at gøre dette, jeg har personligt selv skrevet et simpelt og effektivt et af slagsen, der dog kun indtil videre har support for filsystem, database og APC, dvs ikke memcache endnu, selvom APC som regel er ligeså hurtigt.)

C++ er som regel det sidste skridt, og er ofte unødvendigt. Du kan enten, som Yahoo, skrive ofte benyttede features direkte som PHP extensions i PHP, eller også kan du bruge Facebook's HipHop til at compile din PHP-kode inden deployment. Men det er kun i deployments der nærmer sig Yahoo/Facebook-størrelse, hvor den ændring i workflowet reelt kan betale sig.



Indlæg senest redigeret d. 25.02.2010 13:13 af Bruger #8223
Hej Per,

Tusind tak for dit hurtige og yderst grundige svar!

Så falder mit valg på Codeigniter og vil kigge lidt nærmere på nogle af de andre ting du nævner. Og især de 3. parts libraries til CI vil jeg lige runde og tage i brug, hvis jeg finder noget fornuftigt :)

Mange tak for hjælpen!

Med venlig hilsen
Mark Andreasen




t