![]() |
![]()
| ![]() |
![]()
NAMEApache2::ServerRec - Perl API for Apache server record accessors Synopsisuse Apache2::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 = Apache2::ServerUtil->server; my $vhosts = 0; for (my $s = $server->next; $s; $s = $s->next) { $vhosts++; } print "There are $vhosts virtual hosts"; Description"Apache2::ServerRec" provides the Perl API for Apache server_rec object. "Apache2::ServerUtil" provides an extra functionality. API"Apache2::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);
"is_virtual"Test whether $s is a virtual host object $is_virtual = $s->is_virtual();
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);
"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);
"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);
"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);
"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);
"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);
"loglevel"Get/set the "LogLevel" directive value $loglevel = $s->loglevel(); $prev_loglevel = $s->loglevel($new_loglevel);
For example, to set the "LogLevel" value to "info": use Apache2::Const -compile => qw(LOG_INFO); $s->loglevel(Apache2::Const::LOG_INFO); "next"The next server record in the list (if there are vhosts) $s_next = $s->next(); For example the following code traverses all the servers, starting from the base server and continuing to vhost servers, counting all available vhosts: use Apache2::ServerRec (); use Apache2::ServerUtil (); my $server = Apache2::ServerUtil->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);
"port"Get/set the port value $port = $s->port(); $prev_port = $s->port($new_port);
"process"The process this server is running in $proc = $s->process(); "server_admin"Get/set the "ServerAdmin" value $server_admin = $s->server_admin(); $prev_server_admin = $s->server_admin($new_server_admin);
"server_hostname"Get/set the "ServerName" value $server_hostname = $s->server_hostname(); $prev_server_hostname = $s->server_hostname($new_server_hostname);
"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);
Let us repeat again: the timeout values is microseconds. For example to set the timeout to 20 secs: $s->timeout(20_000_000); NotesLimited Functionality under Threaded MPMsNote 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"Apache2::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();
META: this methods returns a vhost-specific Apache2::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();
"module_config"Get config vector containing pointers to modules' per-server config structures. $module_config = $s->module_config();
"names"Get/set the value(s) for the "ServerAlias" setting $names = $s->names(); $prev_names = $s->names($new_names);
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);
META: we don't have "APR::ArrayHeader" yet See Alsomod_perl 2.0 documentation. Copyrightmod_perl 2.0 and its core modules are copyrighted under The Apache Software License, Version 2.0. AuthorsThe mod_perl development team and numerous contributors.
|