Rev as Web Server CGI programming language?

Phil Davis revdev at pdslabs.net
Wed Apr 18 10:42:48 EDT 2007


Hi Kee -

Great blueprint! Thanks.

Phil Davis


kee nethery wrote:
> Am trying to cut through the marketing chatter and understand the 
> limitations of using RunRev for CGI work. Here is what I think I know, 
> I'd appreciate corrections.
> 
> Andre Garzia's RevHTTP stack is a really nice way to build a web based 
> application in RunRev. You can use the debugger and you can store data 
> in stacks and you can use the various installer apps to keep the web 
> stack updated. It is single threaded such that when one connection comes 
> in, no other connections can be processed until the current connection 
> is done.
> Stack based - yes (build and troubleshoot on your desktop and copy to 
> server)
> Apache server "cgi" - no
> Built-in web server - yes (IT folks are uncomfortable with standalone 
> web servers)
> Debuggable - yes (you can have a connection go through the debugger on 
> the server)
> Negligible launch and tear down overhead for each connection - yes 
> (launch once and it is always running)
> Multiple connections - no
> Multiple simultaneously processing connections - no
> Global Variables that are global for all connections to the web service 
> - yes (one stack)
> Global Variables that are specific to a single connection - yes (each 
> connection can get setup with the initial connection globals)
> 
> File based script version of Jacqueline Landman Gay's tutorial uses the 
> traditional Apache CGI structure and RunRev as the backend process and 
> as such, a new instance of the script gets created for each incoming 
> connection. This is good for simultaneous multiple connections, but the 
> text script version prevents using the RunRev debugger.
> Stack based - no
> Apache server "cgi" - yes (IT folks are comfortable managing Apache 
> installations, it's a known knowledge set)
> Built-in web server - no
> Debuggable - no
> Negligible launch and tear down overhead for each connection - no (each 
> script instance is fast to handle but with hundreds of connections per 
> second, launch and tear down will become an issue)
> Multiple connections - yes (each connection spawns a new instance of the 
> script)
> Multiple simultaneously processing connections - yes (the separate 
> instances have no connections with each other and Apache handles the 
> simultaneous processing)
> Global Variables that are global for all connections to the web service 
> - yes (when stored in a common text file read at startup)
> Global Variables that are specific to a single connection - yes (the 
> script can have setup variables at launch)
> 
> The stack based version of Jacqueline Landman Gay's tutorial uses a 
> simple file based script to execute scripts in stacks. This uses the 
> traditional Apache CGI structure where a new incoming connection spawns 
> a new instance of the script and that script interacts with a stack. 
> This is where I am unsure. If the processing happens in stack scripts, 
> how is contention handled when 100 script instances want to utilize the 
> same stack? Do the scripts single thread one at a time to the stack? How 
> is data stored in the stack by one connection handled by all the other 
> connections?
> Stack based - yes
> Apache server "cgi" - yes
> Built-in web server - no
> Debuggable - yes
> Negligible launch and tear down overhead for each connection - no
> Multiple connections - yes
> Multiple simultaneously processing connections - no
> Global Variables that are global for all connections to the web service 
> - yes (stored in "the stack")
> Global Variables that are specific to a single connection - yes (because 
> "the stack" can only be used by one connection at a time and the 
> connection can reset the connection variables)
> 
> 
> What I'd like is the following. I want to build and debug using all the 
> stack editing tools. I'm OK with single threading while I am debugging. 
> But once I've debugged it, I want, for example, 100 simultaneous 
> connections each running their copy of "the stack", with each stack 
> having access to shared data (Globals), but containing it's own data 
> about it's connection (connection specific globals), and for these 
> connections to stay up and be available for the next connection without 
> the overhead of launching a fresh copy of the script or of the stack 
> (high performance), oh and while I'm at it, if a stack is 2Mb in size 
> and the data that I add to it is another 2Mb in size, can the memory 
> footprint for additional connections be just the additional RAM needed 
> for another set of data and not for another copy of the stack? Is there 
> a way to get this using RunRev?
> Stack based - yes
> Apache server "cgi" - yes
> Built-in web server - no
> Debuggable - yes
> Negligible launch and tear down overhead for each connection - yes
> Multiple connections - yes
> Multiple simultaneously processing connections - yes
> Global Variables that are global for all connections to the web service 
> - yes (stored in "the stack")
> Global Variables that are specific to a single connection - yes 
> (initialized by the CGI script before being fed to "the stack")
> 
> 
> Is anyone doing a combo of Jacqueline's file and stack methods? Using 
> the stack method to debug and keeping everything in the stack script and 
> avoiding the commands that don't work when in a text file.
> 
> 
> Kee Nethery
> 
> _______________________________________________
> use-revolution mailing list
> use-revolution at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your 
> subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-revolution
> 



More information about the use-livecode mailing list