mais bien sur ...
OVERVIEW of CisOrtho:
The CisOrtho website runs on two machines, which I'll call WEB and
BACKEND. WEB runs a perl-CGI script that accepts the user query and
writes the input in a scan directory monitored by a crontab-driven
shell script running on BACKEND, called 'launch.bash'. When
launch.bash finds a file there, it calls cisortho through a perl
wrapper called 'results'. Finally, cisortho runs and produces html
results files to the directory out/, that the user can browse for a
limited time.
This process accumulates files in scan/ and out/ that are monitored by
another crontab-driven shell script, 'cleanup.bash' that deletes them
when they are more than a few weeks old.
Soon, this crude file-based, crontab-dependent communication between
two machines will be replaced by SOAP communication. Thus, the
'listening ears' will be a CGI server running on BACKEND rather than a
crontab job. Also, there will be no need for temporary files that
must be mounted on both machines. Instead, the user input data will
be sent directly from WEB to BACKEND as a SOAP message.
Please let me know if there is a better way to achieve this.
The entire set of software consists of the following:
in WEBROOT:
index.html
methods.html
download.html
per/ #directory of permanent cisortho input files
per/CElegans #elegans non-exonic genomic sequences in RDB format
per/CBriggsae #briggsae non-exonic genomic sequences in RDB format
per/eb_geneinfo #contains gene name, chromosome, start, end, strand
per/eb.null #HMMER 'null' stats file, containing nucleotide freq. in
#elegans and briggsae genomes combined
per/eb.pri #HMMER priors stats file
per/options #file containing input options for the cisortho binary
scan/ #directory that the CGI script '$CGIROOT/query' deposits user submitted
#input data. This directory is scanned by a bash script called 'launch.bash'
#that is controlled by 'cisortho.cron', a crontab job
out/ #directory where cisortho writes output html search results files.
download/
graphics/ #contain extra html files for the cisortho website
log/ #log files for cisortho
launch.bash #bash script, scans 'scan/' for the presence of new input files and if found,
#calls '$CGIROOT/results', a perl script that launches cisortho
cleanup.bash #scans 'scan/' and 'out/', deleting old files and directories periodically
cisortho.cron #launches 'launch.bash', and 'cleanup.bash'
cisortho #the actual c++ binary.
in CGIROOT:
CGIsubs.pm #perl module with helper CGI subroutines
query #perl CGI script for accepting user input submission, writes the input to 'scan/'
results #perl script for parsing the user input and calling cisortho
Other notes:
* launch.bash implements a primitive lock-file based mechanism for
limiting to 2 concurrently running instances of CisOrtho.
* launch.bash is run once per minute by cisortho.cron. During that minute,
launch.bash itself checks the presence of new files once per second. This way,
there is no delay for the user to see that the input is being processed. This
is essentially a poor-man's implementation of SOAP or other
message-based response system.
* upon clicking 'submit', the input is evaluated by the query script,
and there is no deposit to 'scan/' if the input contains errors.