NAME
Apache::ServerRec - Perl API for Apache server record accessors
Synopsis
use Apache::ServerRec ();
$error_fname = $s->error_fname();
$is_virtual = $s->is_virtual();
$keep_alive = $s->keep_alive();
$keep_alive_max = $s->keep_alive_max();
$keep_alive_timeout = $s->keep_alive_timeout();
$limit_req_fields = $s->limit_req_fields();
$limit_req_fieldsize = $s->limit_req_fieldsize();
$limit_req_line = $s->limit_req_line();
$path = $s->path();
$hostname = $s->server_hostname();
$port = $s->port();
$server_admin = $s->server_admin();
$proc = $s->process();
$timeout = $s->timeout();
$loglevel = $s->loglevel();
my $server = Apache->server;
my $vhosts = 0;
for (my $s = $server->next; $s; $s = $s->next) {
$vhosts++;
}
print "There are $vhosts virtual hosts";
Description
Apache::ServerRec
provides the Perl API for Apache server_rec object.
Apache::ServerUtil
provides an extra functionality.
API
Apache::ServerRec
provides the following functions and/or methods:
error_fname
Get/set the ErrorLog
file value (e.g. logs/error_log)
$error_fname = $s->error_fname();
$prev_error_fname = $s->error_fname($new_error_fname);
- obj:
$s
(Apache::ServerRec object
) - opt arg1:
$new_error_fname
( string ) -
If passed, sets the new value for
ErrorLog
- ret:
$error_fname
( string ) -
Returns the
ErrorLog
value setting.If
$new_error_fname
is passed returns the setting before the change. - since: 1.99_15
is_virtual
Test whether $s
is a virtual host object
$is_virtual = $s->is_virtual();
- obj:
$s
(Apache::ServerRec object
) - ret:
$is_virtual
( boolean ) -
Returns the is_virtual setting.
If
$new_is_virtual
is passed, returns the setting before the change. - since: 1.99_15
Example:
print "This is a virtual host" if $s->is_virtual();
keep_alive
Get/set the KeepAlive
setting, which specifies whether Apache should accept more than one request over the same connection from the same client.
$keep_alive = $s->keep_alive();
$prev_keep_alive = $s->keep_alive($new_keep_alive);
- obj:
$s
(Apache::ServerRec object
) - opt arg1:
$new_keep_alive
( boolean ) -
If passed, sets the new keep_alive.
- ret:
$keep_alive
( boolean ) -
Returns the
KeepAlive
setting.If
$new_keep_alive
is passed, returns the setting before the change. - since: 1.99_15
keep_alive_max
Get/set the MaxKeepAliveRequest
setting, which specifies the maximum number of requests Apache will serve over a KeepAlive
connection.
$keep_alive_max = $s->keep_alive_max();
$prev_keep_alive_max = $s->keep_alive_max($new_keep_alive_max);
- obj:
$s
(Apache::ServerRec object
) - opt arg1:
$new_keep_alive_max
( integer ) -
If passed, sets the new keep_alive_max.
- ret:
$keep_alive_max
( integer ) -
Returns the keep_alive_max setting.
If
$new_keep_alive_max
is passed, returns the setting before the change. - since: 1.99_15
keep_alive_timeout
Get/set the KeepAliveTimeout
setting (in microsecs), which specifies how long Apache will wait for another request before breaking a KeepAlive
connection.
$keep_alive_timeout = $s->keep_alive_timeout();
$prev_keep_alive_timeout = $s->keep_alive_timeout($new_timeout);
- obj:
$s
(Apache::ServerRec object
) - opt arg1:
$new_keep_alive_timeout
( integer ) -
The expected value is in microsecs.
If passed, sets the new
KeepAlive
timeout. - ret:
$keep_alive_timeout
( integer ) -
Returns the
KeepAlive
timeout value (in microsecs).If
$new_timeout
is passed, returns the setting before the change. - since: 1.99_15
limit_req_fields
Get/set limit on number of request header fields
$limit_req_fields = $s->limit_req_fields();
$prev_limit_req_fields = $s->limit_req_fields($new_limit_req_fields);
- obj:
$s
(Apache::ServerRec object
) - opt arg1:
$new_limit_req_fields
( integer ) -
If passed, sets the new request headers number limit.
- ret:
$limit_req_fields
( integer ) -
Returns the request headers number limit.
If
$new_limit_req_fields
is passed, returns the setting before the change. - since: 1.99_15
limit_req_fieldsize
Get/set limit on size of any request header field
$limit_req_fieldsize = $s->limit_req_fieldsize();
$prev_limit = $s->limit_req_fieldsize($new_limit);
- obj:
$s
(Apache::ServerRec object
) - opt arg1:
$new_limit_req_fieldsize
( integer ) -
If passed, sets the new request header size limit.
- ret:
$limit_req_fieldsize
( integer ) -
Returns the request header size limit.
If
$new_limit
is passed, returns the setting before the change. - since: 1.99_15
limit_req_line
Get/set limit on size of the HTTP request line
$limit_req_line = $s->limit_req_line();
$prev_limit_req_line = $s->limit_req_line($new_limit_req_line);
- obj:
$s
(Apache::ServerRec object
) - opt arg1:
$new_limit_req_line
( integer ) -
If passed, sets the new request line limit value.
- ret:
$limit_req_line
( integer ) -
Returns the request line limit value
If
$new_limit_req_line
is passed, returns the setting before the change. - since: 1.99_15
loglevel
Get/set the LogLevel
directive value
$loglevel = $s->loglevel();
$prev_loglevel = $s->loglevel($new_loglevel);
- obj:
$s
(Apache::ServerRec object
) - opt arg1:
$new_loglevel
(Apache::Const :log constant
) -
If passed, sets a new
LogLevel
value - ret:
$loglevel
(Apache::Const :log constant
) -
Returns the
LogLevel
value as a constant.If
$new_loglevel
is passed, returns the setting before the change. - since: 1.99_15
For example, to set the LogLevel
value to info
:
use Apache::Const -compile => qw(LOG_INFO);
$s->loglevel(Apache::LOG_INFO);
next
The next server record in the list (if there are vhosts)
$s_next = $s->next();
- obj:
$s
(Apache::ServerRec object
) - ret:
$s_next
(Apache::ServerRec object
) - since: 1.99_15
For example the following code traverses all the servers, starting from the base server and continuing to vhost servers, counting all available vhosts:
use Apache::ServerRec ();
use Apache::ServerUtil ();
my $server = Apache->server;
my $vhosts = 0;
for (my $s = $server->next; $s; $s = $s->next) {
$vhosts++;
}
print "There are $vhosts virtual hosts";
path
Get/set pathname for the ServerPath
setting
$path = $s->path();
$prev_path = $s->path($new_path);
- obj:
$s
(Apache::ServerRec object
) - opt arg1:
$new_path
( string ) -
If passed, sets the new path.
- ret:
$path
( string ) -
Returns the path setting.
If
$new_path
is passed, returns the setting before the change. - since: 1.99_15
port
Get/set the port value
$port = $s->port();
$prev_port = $s->port($new_port);
- obj:
$s
(Apache::ServerRec object
) - opt arg1:
$new_port
( integer ) -
If passed, sets the new port.
Note the limited functionality under threaded MPMs.
META: I don't think one should be allowed to change port number after the server has started.
- ret:
$port
( integer ) -
Returns the port setting.
If
$new_port
is passed returns the setting before the change. - since: 1.99_15
process
The process this server is running in
$proc = $s->process();
- obj:
$s
(Apache::ServerRec object
) - ret:
$proc
(Apache::Process object
) - since: 1.99_15
server_admin
Get/set the ServerAdmin
value
$server_admin = $s->server_admin();
$prev_server_admin = $s->server_admin($new_server_admin);
- obj:
$s
(Apache::ServerRec object
) - opt arg1:
$new_server_admin
( string ) -
If passed, sets the new
ServerAdmin
value. - ret:
$server_admin
( string ) -
Returns the
ServerAdmin
value.If
$new_server_admin
is passed, returns the setting before the change. - since: 1.99_15
server_hostname
Get/set the ServerName
value
$server_hostname = $s->server_hostname();
$prev_server_hostname = $s->server_hostname($new_server_hostname);
- obj:
$s
(Apache::ServerRec object
) - opt arg1:
$new_server_hostname
( string ) -
If passed, sets the
ServerName
value - ret:
$server_hostname
( string ) -
Returns the
ServerName
valueIf
$new_server_hostname
is passed, returns the setting before the change. - since: 1.99_15
timeout
Get/set the timeout (TimeOut
) (in microsecs), which Apache will wait for before it gives up doing something
$timeout = $s->timeout();
$prev_timeout = $s->timeout($new_timeout);
- obj:
$s
(Apache::ServerRec object
) - opt arg1:
$new_timeout
( integer ) -
If passed, sets the new timeout (the value should be in microseconds).
- ret:
$timeout
( integer ) -
Returns the timeout setting in microseconds.
If
$new_timeout
is passed, returns the setting before the change. - since: 1.99_15
Let us repeat again: the timeout values is microseconds. For example to set the timeout to 20 secs:
$s->timeout(20_000_000);
Notes
Limited Functionality under Threaded MPMs
Note that under threaded MPMs, some of the read/write accessors, will be able to set values only before threads are spawned (i.e. before the ChildInit phase
). Therefore if you are developing your application on the non-threaded MPM, but planning to have it run under threaded mpm, you should not use those methods to set values after the ChildInit phase.
The affected accessor methods are marked as such in their respective documentation entries.
Unsupported API
Apache::ServerRec
also provides auto-generated Perl interface for a few other methods which aren't tested at the moment and therefore their API is a subject to change. These methods will be finalized later as a need arises. If you want to rely on any of the following methods please contact the the mod_perl development mailing list so we can help each other take the steps necessary to shift the method to an officially supported API.
addrs
Get the addrs value
$addrs = $s->addrs();
- obj:
$s
(Apache::ServerRec object
) - ret:
$addrs
(Apache::ServerAddr
) -
Returns the addrs setting.
- since: subject to change
META: this methods returns a vhost-specific Apache::ServerAddr object, which is not implemented at the moment. See the struct server_addr_rec entry in httpd-2.0/include/httpd.h for more information. It seems that most (all?) of the information in that record is available through other APIs.
lookup_defaults
Get the lookup_defaults value. MIME type info, etc., before we start checking per-directory info.
$lookup_defaults = $s->lookup_defaults();
- obj:
$s
(Apache::ServerRec object
) - ret:
$lookup_defaults
(Apache::ConfVector
) -
Returns the lookup_defaults setting.
- since: subject to change
module_config
Get config vector containing pointers to modules' per-server config structures.
$module_config = $s->module_config();
- obj:
$s
(Apache::ServerRec object
) - ret:
$module_config
(Apache::ConfVector
) -
Returns the module_config setting.
- since: subject to change
names
Get/set the value(s) for the ServerAlias
setting
$names = $s->names();
$prev_names = $s->names($new_names);
- obj:
$s
(Apache::ServerRec object
) - opt arg1:
$new_names
(APR::ArrayHeader
) -
If passed, sets the new names.
- ret:
$names
(APR::ArrayHeader
) -
Returns the names setting.
If
$new_names
is passed, returns the setting before the change. - since: 1.99_15
META: we don't have APR::ArrayHeader
yet
wild_names
Wildcarded names for ServerAlias servers
$wild_names = $s->wild_names();
$prev_wild_names = $s->wild_names($new_wild_names);
- obj:
$s
(Apache::ServerRec object
) - opt arg1:
$new_wild_names
(APR::ArrayHeader
) -
If passed, sets the new wild_names.
- ret:
$wild_names
(APR::ArrayHeader
) -
Returns the wild_names setting.
If
$new_wild_names
is passed, returns the setting before the change. - since: 1.99_15
META: we don't have APR::ArrayHeader
yet
See Also
Copyright
mod_perl 2.0 and its core modules are copyrighted under The Apache Software License, Version 2.0.