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

Reply via email to