Inget applikationsbegrepp i PHP? Ingen global cache?
Hej,
Normalt utvecklar jag i java, och eftersom världen av idag är rätt www-fokuserad så blir det mycket jsp/servlets/velocity. Då och då har jag funderat lite på att prova på PHP som lite omväxling, men det har aldrig riktigt blivit av. Förrän nu...
Men det tog inte många timmar innan jag råkade på vad jag ser som en uppenbar brist i PHP. Jag tänkte mig nämligen att jag skulle vilja ha en egen liten konfigureringsfil eller vad man nu ska kalla det, placerad utanför den publika html-mappen (dvs filen är inte "surfbar"). Sen läser jag in filens innehåll med PHP-kod, och gör viss stränghantering (t.ex "tokaniserar" raderna). Detta gick utan problem. Men givetvis känns det inte rätt att behöva läsa denna fil varje gång någon surfar in på sidan i fråga, så jag ville spara undan mitt data på något lämpligt sätt, men det gick inte så bra. Hur mycket jag än letade runt hittade jag ingenting, förutom andra som var lika förvirrade som jag är nu, och som mest fick negativa svar på sina frågor.
Själv är jag ju van från servlets-världen att man har tillgång till ett "application scope", där man kan spara undan valfria objekt, som sen är tillgängliga för alla sidor inom samma applikation/webapp oavsett sessioner och liknande.
Jag gissar att jag kommer få lika negativa svar här, men jag frågar ändå: Finns det inget enkelt och vedertaget sätt att spara undan data i minnet, så att alla PHP-sidor kan komma åt det oavsett session?
Är det bara jag som tycker att detta är en stor brist i PHP? Eller är typiska PHP-siter designade på så sätt att denna form av cache inte behövs? Jag menar, visst, man kan självklart låta varje enskilt request orsaka en läsning av filen, eller ett antal anrop till en databas, men hur effektivt är det på en skala? Och hur väl klarar ett sånt system en rejäl anstormning av besökare? Jag minns ett projekt för några år sedan där vi hade missat att slå på vissa cachar, vilket ledde till att systemet gick på knäna även vid måttligt besökarantal, och antalet databasanrop var på tok för många (varje sid-request triggade typ ett 50-tal requests mot databasen om jag minns rätt). När vi slagit på rätt cache så föll databasanropen till ett minimum och siten tuffade på utan minsta ansträngning.
Hur överlever alla stora siter utan denna form av cache? T.ex facebook och wikipedia. Satsar dom stenhårt på ett cache-lager längre ut (hela html-sidor)?