Bendik Simonsen wrote: > I've recently started to learn ASP (*ducks the hurled flowerpots and > vases*) because my school requires it, but of course I prefer PHP for > my own scripting needs. > > I have however, noticed one feature that ASP has that I have not found > an equal for in PHP: the "application" object. > > For those of you not familiar with ASP, the lowdown is this: The > application object acts like a global session. You assign it variables > and values like you would a session, but those variables are available > to all instances and sessions. It is for example very useful to track > different users at the same time, or to send messages from one session > to another, or the likes. > > Anything like this in PHP, or will I have to find a workaround for it, > or *ick* do that little sniplet in ASP? > > Thanks, > Bendik Simonsen >
It doesn't exist. ASP is an application framework which exposes and manages those types of objects. It could easily be approximated simply by storing things in a database. There are significant drawbacks to earlier versions of ASP's handling of application variables - I can not vouch for these issues with Windows 2000 and above. However: 1. Application variables didn't scale across machines. Just like session variables, application variables were/are tied to one machine. In load balanced environments, this is useless. 2. Resource management. Application variables were tied to a specific thread, so even in your multithreaded IIS environment, accessing/updating app variables would require a specific thread to be open/available. If 10 threads needed to update the application variable, they'd all have to wait sequenatially. 3. Easy to abuse. So many people abused the heck out of them it gave ASP a bad name in speed with average users. MS went so far as to say in some of their white papers not to use application variables if speed was a concern. Also, many people would put database connection objects inside application variables, which was just hilarious, because of the single-thread issue above. There are a few other issues with application variables which rub me the wrong way - at least the early MS implementations - again, I can't speak to modern variations, but I suspect many of the same issues exist to some degree or another. They seem much like a 'crutch' if you will - if you need global variables, build an 'appobject' table and put variables in there, and simply create some functions to manage it. Maybe even create an 'application object' of your own, and instantiate it at the start of every PHP request. It would be a farily trivial thing, except for 'restarting' the application object when the application was 'restarted' (stop/start IIS, among other things). Remember, ASP is not a language, and PHP is. You're not programming "ASP" - you are most likely programming VBScript and your server environment gives that language access to server-specific functions such as an application object. Remember the distinction, and it should be easy to see how to duplicate that type of functionality within the context of the PHP language. Hope that helps. P.S. This is the kind of stuf we go over in depth in our PHP training courses for people migrating from ASP and/or operating in dual-language mode. :) ------------------------------ Michael Kimsal http://www.tapinternet.com/php PHP Training Courses 734-480-9961 -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php