Curry Package 'html-cgi'

html-cgi

This package provides support for CGI programming in the HTML library. It contains the library HTML.CGI which is an auxiliary library to implement danmic web pages with the library HTML.Base.

As a prerequisite to execute dynamic web pages, the installation of the Curry Port Name Server (CPNS) and the HTML/CGI registry provided by this package is required. This can be easily done by the commands

> cypm install cpns
> cypm install html-cgi

These commands install the executables curry-cpnsd (CPNS demon) and curry-cgi (HTML/CGI registry) in the bin directory of CPM. These executables are invoked during the execution of a dynamic web page.

Furthermore, one should also install the package html by the command

> cypm install html

This installs the executable curry-makecgi which is used to compile a dynamic web script implemented in Curry.


CGI Registry

The CGI registry is a table of all active CGI server processes implementing dynamic web pages. Such a process is started when a dynamic web page is accessed on the web server. To transmit user inputs (provided via CGI) to the corresponding server process, the executable curry-cgi provided by this package is used.

CGI server processes are automatically started and terminated (e.g., after 120 minutes of inactivity). In order to manage these processes manually, one can access the CGI registry via the executable curry-cgi. The following commands can be used to access CGI server processes:

> curry-cgi show

Shows all currently active servers (name and pids)

> curry-cgi sketch

Sketches the status of all currently active servers (date of next cleanup and dates of all currently stored event handlers)

> curry-cgi clean

Starts a cleanup on each server (usually, this is implicitly started whenever a dynamic web page is requested), i.e., expired event handlers are deleted. Morever, servers which are inactive for a long time (the exact period is defined in HTML.cgiServerExpiration) are terminated. Thus, it is a good idea to execute this command periodically, e.g., via a cron job.

> curry-cgi stop

Stops all currently active servers (however, there are automatically restarted when a user requests the corresponding dynamic web page) by sending them a termination message.

> curry-cgi kill

Kills all currently active servers by killing their processes. This could be used instead of stop if some servers do not react for some reason.

The use of stop/kill might be necessary in order to restart servers that have required too much resources without free them (which could be the case if the underlying run-time system does not deallocate memory).

The package html contains a web script (see the README there) which can be installed on the web server to execute these commands. This might be necessary (instead of using curry-cgi) if the web server has its own directory /tmp which is not accessible from processes outside the web server.

Auxiliary files

/tmp/Curry_CGIREGISTRY : the data stored in the current registry