What I have been able to grasp from reading the source and documentation from several PHP frameworks is that they generally don’t persist, except for what you personally cache or throw into a $_SESSION var. Why is this? It seems a waste to essentially initialize the framework for every single request, would it not be better to at least serialize and store some core objects and variables to save processing and time?
At first I thought this was rather subjective and avoided asking, but everything I’ve read doesn’t really speak about it at all, so there must be something obvious I’m missing.
The only real mention/discussion I’ve found of this is here which doesn’t directly answer my question and some of which goes over my head a little.
Edit for Clarification: I am not asking about the inner workings of PHP, I know how persistence works (ie won’t persist unless you make it through caching or session vars), I am asking why PHP frameworks don’t do this for their core objects. Again it seems subjective to me, but as almost nothing I’ve read mentions it, and it seems to be fairly standard practice, I’d like to know what I’m missing.
Memory:
Most frameworks don’t store these core mechanisms in $_SESSION due to memory concerns. Frameworks often generate variables / objects that can contain several megabytes of information. That may not sound like a lot, but scale that to a few thousand users and you’ve got a problem.
Data “Freshness”
The second issue with shoving framework components into memory is that they can become out of date very quickly. Instead of pulling an object out of memory, checking to see if it’s outdated and then recreating it (if it’s indeed outdated) is less efficient (most of the time) than just recreating it with every request.
I hope this clarifies things.