NAME

lonsql - LON TCP-MySQL-Server Daemon for handling database requests.


SYNOPSIS

This script should be run as user=www. Note that a lonsql.pid file contains the pid of the parent process.


DESCRIPTION

lonsql is


Internals

Global Variables
dbh
Variables required for forking
$MAX_CLIENTS_PER_CHILD
The number of clients each child should process.

%children
The keys to %children are the current child process IDs

$children
The current number of children

Main body of code.
Read data from loncapa_apache.conf and loncapa.conf.
Ensure we can access the database.
Determine if there are other instances of lonsql running.
Read the hosts file.
Create a socket for lonsql.
Fork once and dissociate from parent.
Write PID to disk.
Prefork children and maintain the population of children.
&make_new_child
Inputs: None

Returns: None

&do_sql_query
Runs an sql metadata table query.

Inputs: $query, $custom, $customshow

Returns: A string containing escaped results.

&logthis
Inputs: $message, the message to log

Returns: nothing

Writes $message to the logfile.

&subreply
Sends a command to a server. Called only by &reply.

Inputs: $cmd,$server

Returns: The results of the message or 'con_lost' on error.

&reply
Sends a command to a server.

Inputs: $cmd,$server

Returns: The results of the message or 'con_lost' on error.

&escape
Escape special characters in a string.

Inputs: string to escape

Returns: The input string with special characters escaped.

&unescape
Unescape special characters in a string.

Inputs: string to unescape

Returns: The input string with special characters unescaped.

&ishome
Determine if the current machine is the home server for a user. The determination is made by checking the filesystem for the users information.

Inputs: $author

Returns: 0 - this is not the authors home server, 1 - this is.

&propath
Inputs: user name, user domain

Returns: The full path to the users directory.

&courselog
Inputs: $path, $command

Returns: unescaped string of values.

&userlog
Inputs: $path, $command

Returns: unescaped string of values.

Functions required for forking
REAPER
REAPER takes care of dead children.

HUNTSMAN
Signal handler for SIGINT.

HUPSMAN
Signal handler for SIGHUP

DISCONNECT
Disconnects from database.