html-cgi
========
This package provides support for CGI programming when
the HTML library of package `html` is used.
It contains the library `HTML.CGI` which is an auxiliary library
to implement dynamic 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