Rev as Web Server CGI programming language?
Andre Garzia
soapdog at mac.com
Wed Apr 18 12:47:24 EDT 2007
Kee,
fetch http://andregarzia.com/RevHTTP.zip
it has examples...
Andre
On Apr 18, 2007, at 1:42 PM, kee nethery wrote:
> 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
>
> _______________________________________________
> 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