Rev as Web Server CGI programming language?
kee nethery
kee at kagi.com
Wed Apr 18 12:42:30 EDT 2007
Andre appears to do what I was pondering, write and debug using the
stack based web server, and then deploy under apache in a text file.
My plan is to try to document the development process so that I'll be
able to remember how to use it months from now. When I get that
documented I'll pass it back to the list. Looks like this is a good
95% of the solution I desire. And that should be good enough for now.
Kee
On Apr 18, 2007, at 7:42 AM, Phil Davis wrote:
> 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
> _______________________________________________
> 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