Private VFP memory variables are not preserved between hits on the same channel and definitely not between hits across channels. Each channel is a separate instance of VFP and there is no way to know which channel will serve the next request. Variables and objects defined in your scripts will not be available in the next request unless they are defined as public. You should NEVER use public variables to save user-specific information between hits. Whenever you declare a variable as public, this variable remains in memory ONLY for that particular channel, even after the request is processed. This means that:
a) Public variables only persist in the channel they were declared in. They will not be available if the next request for a particular user is served by a different channel.
b) Public variables are shared by all users on the same channel so they can not be used to maintain state information.
In order to pass information between hits you need to use one of the techniques outlined in the "Passing Parameters Between Hits" topic of the FoxWeb documentation (
http://www.foxweb.com/document/State.htm). Some of these techniques are illustrated in the ContactMine example.
The only situation where public memory variables can be used is if they contain information that is not specific to a particular user or application. For example, you should define your objects as public if their startup code takes too long and you do not want to define them at the beginning of every hit. If you chose to define your objects as public you should make no assumptions about the state of these objects (or even about whether they exist). Before using the objects your code should first check for their existence (IF TYPE('ObjectName') = 'O') and then, either create them, or re-initialize all properties.
FoxWeb Support Team
support@foxweb.com
Sent by mike hood on 01/10/2002 07:24:35 AM:
ive been testing the foxweb app solo and getting sucessful results. now i have 4 users testing the foxweb app. it work fine untill thier is more than one user on the system. example on my error handler.fwx which is close to the default errhandler.fwx yall use as open source. i added one global var to that errhandler to return back the userid logged on as part of the error message; works great. untill now and what im getting is user1 will get an error message with user2 userid in the message string??
how does foxweb handle global vars?
are global vars private to that workstation session or is a global var public 2 anyone who logs on the server and thier isnt a unique memory session?
bewildered,
mike hood