stas 01/11/15 01:04:58
Modified: guide CHANGES advocacy.html browserbugs.html config.html
control.html correct_headers.html databases.html
dbm.html debug.html download.html frequent.html
hardware.html help.html index.html index_long.html
install.html intro.html mod_perl_guide.pdf.gz
modules.html multiuser.html performance.html
perl.html porting.html scenario.html security.html
snippets.html start.html strategy.html
troubleshooting.html
guide/code lwp-bench.pl
Log:
Nov 15 2001 ver 1.31
* intro.pod:
o updated the long due credits section (~200 contributors! in total)
* install.pod:
o add "When DSO can be Used" (Doug)
* modules.pod:
o add Module::Use
o add Apache::ConfigFile
* debug.pod:
o noted the fact that the technique of detecting aborted connections
doesn't work with mod_proxy.
* performance.pod:
o removed from the last section a dead link of
http://members.nbci.com/Alex_Maranda/gnuintel/GNUintel.htm
* snippets.pod:
o detecting SSL connection (Vivek Khera, Geoff Young, Issac
Goldstand)
o Note the Apache::Request->instance class method in addition to the
POST2GET example (Robin Bjorn)
* porting.pod:
o s/headers_out/header_out/ where it was incorrectly used,
(Issac Goldstand)
o fix the potential bug when using -r $file followed by -M _ and 'do
$filename' inbetween, which may call stat() and _ won't include the
right stat struct. (Randy Kobes)
* troubleshooting.pod:
o SegFaults During Startup
* help.pod:
o add a reference to http://lists.perl.org/
o add references to the new mailing lists
* code:
o the results in lwp-bench.pl are correctly based on the number of
@urls used (Boris Zentner)
* strategy.pod:
o new section: "Closing Lingering Connections with Lingerd"
Revision Changes Path
1.31 +63 -0 modperl-site/guide/CHANGES
Index: CHANGES
===================================================================
RCS file: /home/cvs/modperl-site/guide/CHANGES,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -r1.30 -r1.31
--- CHANGES 2001/09/02 14:26:57 1.30
+++ CHANGES 2001/11/15 09:04:50 1.31
@@ -2,6 +2,69 @@
### mod_perl Guide CHANGES file ###
###################################
+Nov 15 2001 ver 1.31
+
+* intro.pod:
+
+ o updated the long due credits section (~200 contributors! in total)
+
+* install.pod:
+
+ o add "When DSO can be Used" (Doug)
+
+* modules.pod:
+
+ o add Module::Use
+
+ o add Apache::ConfigFile
+
+* debug.pod:
+
+ o noted the fact that the technique of detecting aborted connections
+ doesn't work with mod_proxy.
+
+* performance.pod:
+
+ o removed from the last section a dead link of
+ http://members.nbci.com/Alex_Maranda/gnuintel/GNUintel.htm
+
+* snippets.pod:
+
+ o detecting SSL connection (Vivek Khera, Geoff Young, Issac Goldstand)
+
+ o Note the Apache::Request->instance class method in addition to the
+ POST2GET example (Robin Bjorn)
+
+* porting.pod:
+
+ o s/headers_out/header_out/ where it was incorrectly used,
+ (Issac Goldstand)
+
+ o fix the potential bug when using -r $file followed by -M _ and 'do
+ $filename' inbetween, which may call stat() and _ won't include the
+ right stat struct. (Randy Kobes)
+
+* troubleshooting.pod:
+
+ o SegFaults During Startup
+
+* help.pod:
+
+ o add a reference to http://lists.perl.org/
+
+ o add references to the new mailing lists
+
+* code:
+
+ o the results in lwp-bench.pl are correctly based on the number of
+ @urls used (Boris Zentner)
+
+* strategy.pod:
+
+ o new section: "Closing Lingering Connections with Lingerd"
+
+
+
09.02.2001 ver 1.30
* snippets.pod
1.13 +1 -1 modperl-site/guide/advocacy.html
Index: advocacy.html
===================================================================
RCS file: /home/cvs/modperl-site/guide/advocacy.html,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- advocacy.html 2001/09/02 14:26:57 1.12
+++ advocacy.html 2001/11/15 09:04:50 1.13
@@ -272,7 +272,7 @@
<td align=center valign=center>
<b><font size=-1>Written by <a
-href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 05/05/2001
+href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 09/14/2001
</font></b>
<br>
1.15 +1 -1 modperl-site/guide/browserbugs.html
Index: browserbugs.html
===================================================================
RCS file: /home/cvs/modperl-site/guide/browserbugs.html,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- browserbugs.html 2001/04/27 16:57:09 1.14
+++ browserbugs.html 2001/11/15 09:04:50 1.15
@@ -157,7 +157,7 @@
<td align=center valign=center>
<b><font size=-1>Written by <a
-href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 06/22/2000
+href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 09/14/2001
</font></b>
<br>
1.33 +4 -1 modperl-site/guide/config.html
Index: config.html
===================================================================
RCS file: /home/cvs/modperl-site/guide/config.html,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -r1.32 -r1.33
--- config.html 2001/09/02 14:26:57 1.32
+++ config.html 2001/11/15 09:04:50 1.33
@@ -596,6 +596,9 @@
virtual host configurations to override the main server configuration.
<P>
+Later sections override earlier ones.
+
+<P>
[ <B><FONT SIZE=-1><A HREF="#toc">TOC</A></FONT></B> ]
<HR>
<CENTER><H2><A NAME="Sub_Grouping_of_Location_Dir">Sub-Grouping of
<Location>, <Directory> and <Files> Sections</A></H2></CENTER>
@@ -4293,7 +4296,7 @@
<td align=center valign=center>
<b><font size=-1>Written by <a
-href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 07/10/2001
+href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 10/28/2001
</font></b>
<br>
1.33 +1 -1 modperl-site/guide/control.html
Index: control.html
===================================================================
RCS file: /home/cvs/modperl-site/guide/control.html,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -r1.32 -r1.33
--- control.html 2001/09/02 14:26:57 1.32
+++ control.html 2001/11/15 09:04:50 1.33
@@ -2837,7 +2837,7 @@
<td align=center valign=center>
<b><font size=-1>Written by <a
-href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 05/05/2001
+href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 09/14/2001
</font></b>
<br>
1.16 +1 -1 modperl-site/guide/correct_headers.html
Index: correct_headers.html
===================================================================
RCS file: /home/cvs/modperl-site/guide/correct_headers.html,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- correct_headers.html 2001/09/02 14:26:57 1.15
+++ correct_headers.html 2001/11/15 09:04:50 1.16
@@ -292,7 +292,7 @@
use Date::Parse;
# Date::Parse parses RCS format, Apache::Util::parsedate doesn't
$Mtime ||=
- Date::Parse::str2time(substr q$Date: 2001/09/02 14:26:57 $, 6);
+ Date::Parse::str2time(substr q$Date: 2001/11/15 09:04:50 $, 6);
$r->set_last_modified($Mtime);</pre>
</td>
@@ -1290,7 +1290,7 @@
<td align=center valign=center>
<b><font size=-1>Written by <a
-href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 07/03/2001
+href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 09/14/2001
</font></b>
<br>
1.20 +1 -1 modperl-site/guide/databases.html
Index: databases.html
===================================================================
RCS file: /home/cvs/modperl-site/guide/databases.html,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -r1.19 -r1.20
--- databases.html 2001/09/02 14:26:57 1.19
+++ databases.html 2001/11/15 09:04:50 1.20
@@ -1025,7 +1025,7 @@
<td align=center valign=center>
<b><font size=-1>Written by <a
-href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 05/05/2001
+href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 09/14/2001
</font></b>
<br>
1.20 +1 -1 modperl-site/guide/dbm.html
Index: dbm.html
===================================================================
RCS file: /home/cvs/modperl-site/guide/dbm.html,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -r1.19 -r1.20
--- dbm.html 2001/09/02 14:26:58 1.19
+++ dbm.html 2001/11/15 09:04:50 1.20
@@ -753,7 +753,7 @@
<td align=center valign=center>
<b><font size=-1>Written by <a
-href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 05/05/2001
+href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 09/14/2001
</font></b>
<br>
1.30 +7 -1 modperl-site/guide/debug.html
Index: debug.html
===================================================================
RCS file: /home/cvs/modperl-site/guide/debug.html,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -r1.29 -r1.30
--- debug.html 2001/09/02 14:26:58 1.29
+++ debug.html 2001/11/15 09:04:50 1.30
@@ -945,6 +945,12 @@
attempt to read from or write to connection is made.
<P>
+Unfortunately the detection technique we are going to present doesn't work
+if the connection to the back-end mod_perl server is coming from the
+front-end mod_proxy, as the latter doesn't break the connection to the
+back-end when user has aborted the connection.
+
+<P>
If the reading of the request's data is completed and the code does
processing without writing anything back to the client the broken
connection won't be noticed. When an attempt is made to send at least one
@@ -7196,7 +7202,7 @@
<td align=center valign=center>
<b><font size=-1>Written by <a
-href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 04/28/2001
+href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 11/06/2001
</font></b>
<br>
1.20 +1 -1 modperl-site/guide/download.html
Index: download.html
===================================================================
RCS file: /home/cvs/modperl-site/guide/download.html,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -r1.19 -r1.20
--- download.html 2001/09/02 14:26:58 1.19
+++ download.html 2001/11/15 09:04:50 1.20
@@ -450,7 +450,7 @@
<td align=center valign=center>
<b><font size=-1>Written by <a
-href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 07/18/2001
+href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 09/14/2001
</font></b>
<br>
1.17 +1 -1 modperl-site/guide/frequent.html
Index: frequent.html
===================================================================
RCS file: /home/cvs/modperl-site/guide/frequent.html,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- frequent.html 2001/01/11 13:48:16 1.16
+++ frequent.html 2001/11/15 09:04:50 1.17
@@ -154,7 +154,7 @@
<td align=center valign=center>
<b><font size=-1>Written by <a
-href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 05/27/2000
+href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 09/14/2001
</font></b>
<br>
1.14 +1 -1 modperl-site/guide/hardware.html
Index: hardware.html
===================================================================
RCS file: /home/cvs/modperl-site/guide/hardware.html,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- hardware.html 2001/09/02 14:26:58 1.13
+++ hardware.html 2001/11/15 09:04:50 1.14
@@ -734,7 +734,7 @@
<td align=center valign=center>
<b><font size=-1>Written by <a
-href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 05/05/2001
+href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 09/14/2001
</font></b>
<br>
1.32 +100 -6 modperl-site/guide/help.html
Index: help.html
===================================================================
RCS file: /home/cvs/modperl-site/guide/help.html,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -r1.31 -r1.32
--- help.html 2001/10/16 16:08:35 1.31
+++ help.html 2001/11/15 09:04:50 1.32
@@ -272,14 +272,15 @@
.
<P>
-A <EM>searchable</EM> mod_perl mailing list archive is available at <A
-HREF="http://mathforum.org/epigone/modperl">http://mathforum.org/epigone/modperl</A>
-. Thanks to Ken Williams for this.
+Searchable mailing list archives are available:
+<UL>
+<P><LI>
<P>
-More archives available:
+<A
+HREF="http://mathforum.org/epigone/modperl">http://mathforum.org/epigone/modperl</A>
-<UL>
+
<P><LI>
<P>
<A
@@ -311,6 +312,94 @@
</UL>
+<P><LI><STRONG><A NAME="item_The">The mod_perl development mailing list</A></STRONG>
+<P>
+This list is for discussions about the development of the core mod_perl.
+
+<P>
+Subscription information.
+
+<P>
+To subscribe to this list send an empty email to <A
+HREF="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</A>
+To unsubscribe from the list send an empty email to <A
+HREF="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</A>
+To get help with the list send an empty email to <A
+HREF="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</A>
+
+<P>
+List's searchable archives:
+
+<UL>
+<P><LI>
+<P>
+<A
+HREF="http://marc.theaimsgroup.com/?l=apache-modperl-dev&r=1&w=2#apache-modperl-dev">http://marc.theaimsgroup.com/?l=apache-modperl-dev&r=1&w=2#apache-modperl-dev</A>
+
+
+<P><LI>
+<P>
+<A
+HREF="http://www.mail-archive.com/dev%40perl.apache.org/">http://www.mail-archive.com/dev%40perl.apache.org/</A>
+
+
+</UL>
+<P><LI><STRONG><A NAME="item_The">The mod_perl documentation mailing
list</A></STRONG>
+<P>
+This mailing list is for discussing mod_perl documentation.
+
+<P>
+Subscription information
+
+<P>
+
+ <table>
+ <tr>
+
+ <td bgcolor="#eeeeee" width="1">
+
+ </td>
+
+ <td>
+ <pre> Subscribe to the list: [EMAIL PROTECTED]
+ Unsubscribe from the list: [EMAIL PROTECTED]
+ Get help with the list: [EMAIL PROTECTED]</pre>
+ </td>
+
+ </tr>
+ </table>
+ <P><LI><STRONG><A NAME="item_The">The Apache test framework development mailing
list</A></STRONG>
+<P>
+The test-dev list is the list where Apache HTTP Test project is discussed.
+
+<P>
+Subscription information:
+
+<P>
+
+ <table>
+ <tr>
+
+ <td bgcolor="#eeeeee" width="1">
+
+ </td>
+
+ <td>
+ <pre> Subscribe to the list: [EMAIL PROTECTED]
+ Unsubscribe from the list: [EMAIL PROTECTED]
+ Get help with the list: [EMAIL PROTECTED]</pre>
+ </td>
+
+ </tr>
+ </table>
+ <P>
+List's searchable archive:
+
+<P>
+<A
+HREF="http://www.apachelabs.org/test-dev/">http://www.apachelabs.org/test-dev/</A>
+
+
<P><LI><STRONG><A NAME="item_The">The advocacy mailing list</A></STRONG>
<P>
The list for mod_perl advocacy issues, discussions about sites, etc.
@@ -416,6 +505,11 @@
<P>
Take a look also at Inline.pm (CPAN) and SWIG (http://www.swig.org/)
+<P><LI><STRONG><A NAME="item_Perl">Perl mailing lists</A></STRONG>
+<P>
+A huge number of diverse Perl mailing lists is listed at <A
+HREF="http://lists.perl.org/.">http://lists.perl.org/.</A>
+
<P><LI><STRONG><A NAME="item_perl5">perl5-porters mailing list</A></STRONG>
<P>
Send an email:
@@ -804,7 +898,7 @@
<td align=center valign=center>
<b><font size=-1>Written by <a
-href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 08/22/2001
+href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 10/20/2001
</font></b>
<br>
1.35 +3 -3 modperl-site/guide/index.html
Index: index.html
===================================================================
RCS file: /home/cvs/modperl-site/guide/index.html,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -r1.34 -r1.35
--- index.html 2001/09/02 14:26:58 1.34
+++ index.html 2001/11/15 09:04:50 1.35
@@ -22,7 +22,7 @@
</p>
</center>
- <center><p><b>Version 1.30 Sep 2, 2001</b></p></center>
+ <center><p><b>Version 1.31 Nov 15, 2001</b></p></center>
<table align=center width="70%">
@@ -223,7 +223,7 @@
To read PDF files you can
use: <code>ghostview</code> (<code>gv</code>),
<code>xpdf</code> or <code>acroread</code> (with
- <code>acroread</code> you can search the text and us the
+ <code>acroread</code> you can search the text and use the
hyperlinks). You can use the
<code>pdf2ps</code> utility to convert PDF to
PostSscript format.
@@ -333,7 +333,7 @@
<b><font size=-1>
Written by <a
href="help.html#Contacting_me">Stas
- Bekman</a>.<br> Last Modified at 09/02/2001
+ Bekman</a>.<br> Last Modified at 11/15/2001
</font></b>
<br>
1.9 +9 -3 modperl-site/guide/index_long.html
Index: index_long.html
===================================================================
RCS file: /home/cvs/modperl-site/guide/index_long.html,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- index_long.html 2001/09/02 14:26:58 1.8
+++ index_long.html 2001/11/15 09:04:50 1.9
@@ -22,7 +22,7 @@
</p>
</center>
- <center><p><b>Version 1.30 Sep 2, 2001</b></p></center>
+ <center><p><b>Version 1.31 Nov 15, 2001</b></p></center>
<table align=center width="70%">
@@ -251,6 +251,7 @@
<LI><A HREF="install.html#The_All_In_One_Way">The All-In-One Way</A>
<LI><A HREF="install.html#The_Flexible_Way">The Flexible Way</A>
+ <LI><A HREF="install.html#When_DSO_can_be_Used">When DSO can be
Used</A>
<LI><A HREF="install.html#Build_mod_perl_as_a_DSO_inside_t">Build
mod_perl as a DSO inside the Apache Source Tree via APACI</A>
<UL>
@@ -474,6 +475,7 @@
<LI><A HREF="strategy.html#The_Squid_Server">The Squid Server</A>
<LI><A HREF="strategy.html#Apache_s_mod_proxy">Apache's mod_proxy</A>
+ <LI><A HREF="strategy.html#Closing_Lingering_Connections_wi">Closing
Lingering Connections with Lingerd</A>
</UL>
<LI><A HREF="strategy.html#When_One_Machine_is_not_Enough_f">When One Machine
is not Enough for RDBMS Database and mod_perl</A>
@@ -868,6 +870,7 @@
<LI><A HREF="troubleshooting.html#Configuration_and_Startup">Configuration and
Startup</A>
<UL>
+ <LI><A HREF="troubleshooting.html#SegFaults_During_Startup">SegFaults
During Startup</A>
<LI><A
HREF="troubleshooting.html#libexec_libperl_so_open_failed_">libexec/libperl.so: open
failed: No such file or directory</A>
<LI><A
HREF="troubleshooting.html#install_driver_Oracle_failed_C">install_driver(Oracle)
failed: Can't load '.../DBD/Oracle/Oracle.so' for module DBD::Oracle</A>
<LI><A
HREF="troubleshooting.html#Invalid_command_PerlHandler_">Invalid command
'PerlHandler'...</A>
@@ -1182,6 +1185,8 @@
<LI><A HREF="modules.html#Apache_LogSTDERR">Apache::LogSTDERR</A>
<LI><A HREF="modules.html#Apache_RedirectLogFix">Apache::RedirectLogFix</A>
<LI><A HREF="modules.html#Apache_SubProcess">Apache::SubProcess</A>
+ <LI><A HREF="modules.html#Module_Use_Log_and_Load_used_">Module::Use - Log and
Load used Perl modules</A>
+ <LI><A HREF="modules.html#Apache_ConfigFile_Parse_an_Ap">Apache::ConfigFile -
Parse an Apache style httpd.conf config file</A>
</UL>
<P>
<LI><A HREF="snippets.html"><B><FONT SIZE=+1>Code Snippets </FONT></B></A></LI><P>
@@ -1202,6 +1207,7 @@
<LI><A HREF="snippets.html#Passing_and_Preserving_Custom_Da">Passing and
Preserving Custom Data Structures Between Handlers</A>
<LI><A HREF="snippets.html#Passing_Notes_Between_mod_perl_a">Passing Notes
Between mod_perl and other (non-Perl) Apache Modules</A>
<LI><A HREF="snippets.html#Passing_Environment_Variables_Be">Passing
Environment Variables Between Handlers</A>
+ <LI><A HREF="snippets.html#Verifying_Whether_A_Request_Was_">Verifying Whether
A Request Was Received Over An SSL Connection</A>
<LI><A HREF="snippets.html#CGI_params_in_the_mod_perl_ish_">CGI::params in the
mod_perl-ish Way</A>
<LI><A HREF="snippets.html#Subclassing_Apache_Request">Subclassing
Apache::Request</A>
<LI><A HREF="snippets.html#Sending_Email_from_mod_perl">Sending Email from
mod_perl</A>
@@ -1402,7 +1408,7 @@
To read PDF files you can
use: <code>ghostview</code> (<code>gv</code>),
<code>xpdf</code> or <code>acroread</code> (with
- <code>acroread</code> you can search the text and us the
+ <code>acroread</code> you can search the text and use the
hyperlinks). You can use the
<code>pdf2ps</code> utility to convert PDF to
PostSscript format.
@@ -1512,7 +1518,7 @@
<b><font size=-1>
Written by <a
href="help.html#Contacting_me">Stas
- Bekman</a>.<br> Last Modified at 09/02/2001
+ Bekman</a>.<br> Last Modified at 11/15/2001
</font></b>
<br>
1.22 +67 -7 modperl-site/guide/install.html
Index: install.html
===================================================================
RCS file: /home/cvs/modperl-site/guide/install.html,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -r1.21 -r1.22
--- install.html 2001/09/02 14:26:58 1.21
+++ install.html 2001/11/15 09:04:50 1.22
@@ -111,6 +111,7 @@
<LI><A HREF="#The_All_In_One_Way">The All-In-One Way</A>
<LI><A HREF="#The_Flexible_Way">The Flexible Way</A>
+ <LI><A HREF="#When_DSO_can_be_Used">When DSO can be Used</A>
<LI><A HREF="#Build_mod_perl_as_a_DSO_inside_t">Build mod_perl as a
DSO inside the Apache Source Tree via APACI</A>
<UL>
@@ -2312,18 +2313,77 @@
<P>
[ <B><FONT SIZE=-1><A HREF="#toc">TOC</A></FONT></B> ]
<HR>
-<CENTER><H2><A NAME="Build_mod_perl_as_a_DSO_inside_t">Build mod_perl as a DSO
inside the Apache Source Tree via APACI</A></H2></CENTER>
+<CENTER><H2><A NAME="When_DSO_can_be_Used">When DSO can be Used</A></H2></CENTER>
+<P>
+If you want to build <A HREF="#item_mod_perl">mod_perl</A> as DSO you must make
sure that Perl was built with system's native
+<CODE>malloc().</CODE> If Perl was built with its own <CODE>malloc()</CODE>
+and <CODE>-Dbincompat5005</CODE>, it pollutes the main <CODE>httpd</CODE>
+program with <EM>free</EM> and <EM>malloc</EM> symbols. When <CODE>httpd</CODE>
restarts (happens at startup too), any references in the main program to
+<EM>free</EM> and <EM>malloc</EM> become invalid, and this causes memory leaks and
segfaults.
+
<P>
-<STRONG>Warning</STRONG>: <EM>This is still experimental, so be warned!</EM>
+Notice that mod_perl's build system warns about this problem.
+
+<P>
+With Perl 5.6.0+ this pollution can be prevented with
+<CODE>-Ubincompat5005</CODE>. or <CODE>-Uusemymalloc</CODE> for any version of
Perl, but there's a chance that might hurt performance
+depending on platform, so
+<CODE>-Ubincompat5005</CODE> is likely a better choice.
+
+<P>
+If you get the following reports with Perl version 5.6.0+:
+
+<P>
+
+ <table>
+ <tr>
+ <td bgcolor="#eeeeee" width="1">
+
+ </td>
+ <td>
+ <pre> % perl -V:usemymalloc
+ usemymalloc='y';
+ % perl -V:bincompat5005
+ bincompat5005='define';</pre>
+ </td>
+
+ </tr>
+ </table>
+ <P>
+rebuild Perl with <CODE>-Ubincompat5005</CODE>.
<P>
-With Apache 1.3 there is support for building modules as Dynamic Shared
-Objects (DSO). So there is support for DSO in mod_perl now, too. Your
-mileage may vary. Almost certainly it will.
+For Perl versions pre-5.6.x, if you get:
<P>
+
+ <table>
+ <tr>
+
+ <td bgcolor="#eeeeee" width="1">
+
+ </td>
+
+ <td>
+ <pre> % perl -V:usemymalloc
+ usemymalloc='y';</pre>
+ </td>
+
+ </tr>
+ </table>
+ <P>
+rebuild Perl with <CODE>-Uusemymalloc</CODE>.
+
+<P>
+Now rebuild mod_perl.
+
+<P>
+[ <B><FONT SIZE=-1><A HREF="#toc">TOC</A></FONT></B> ]
+<HR>
+<CENTER><H2><A NAME="Build_mod_perl_as_a_DSO_inside_t">Build mod_perl as a DSO
inside the Apache Source Tree via APACI</A></H2></CENTER>
+<P>
We have already said that the new mod_perl build environment
(<CODE>USE_APACI</CODE>) is a hybrid. What does it mean? It means for instance that
the same <CODE>src/modules/perl/</CODE> stuff can be used to build mod_perl as a DSO
or not, without having to edit
anything especially for this. When you want to build <CODE>libperl.so</CODE> all
you have to do is to add one single option to the above steps.
@@ -3995,7 +4055,7 @@
<P><LI>
<P>
Installs mod_perl as an ``add in'' to the RedHat Apache package, but does
-not install mod_perl as a DSO and all the problems that brings.
+not install mod_perl as a DSO.
<P><LI>
<P>
@@ -6470,7 +6530,7 @@
<td align=center valign=center>
<b><font size=-1>Written by <a
-href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 09/02/2001
+href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 11/15/2001
</font></b>
<br>
1.30 +25 -3 modperl-site/guide/intro.html
Index: intro.html
===================================================================
RCS file: /home/cvs/modperl-site/guide/intro.html,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -r1.29 -r1.30
--- intro.html 2001/10/16 16:08:35 1.29
+++ intro.html 2001/11/15 09:04:51 1.30
@@ -695,15 +695,19 @@
Credits of course go to ( alphabetically sorted ):
<UL>
+<P><LI><STRONG><A NAME="item_Aaron">Aaron Johnson</A></STRONG>
<P><LI><STRONG><A NAME="item_Ajay">Ajay Shah</A></STRONG>
+<P><LI><STRONG><A NAME="item_Alexander">Alexander Farber</A></STRONG>
<P><LI><STRONG><A NAME="item_Andreas">Andreas J. Koenig</A></STRONG>
<P><LI><STRONG><A NAME="item_Andreas">Andreas Piesk</A></STRONG>
<P><LI><STRONG><A NAME="item_Andrei">Andrei A. Voropaev</A></STRONG>
<P><LI><STRONG><A NAME="item_Andrew">Andrew Ford</A></STRONG>
<P><LI><STRONG><A NAME="item_Anthony">Anthony D. Ettinger</A></STRONG>
+<P><LI><STRONG><A NAME="item_Artur">Artur Zambrzycki</A></STRONG>
<P><LI><STRONG><A NAME="item_Ask">Ask Bjoern Hansen</A></STRONG>
<P><LI><STRONG><A NAME="item_Barrie">Barrie Slaymaker</A></STRONG>
<P><LI><STRONG><A NAME="item_Bill">Bill Moseley</A></STRONG>
+<P><LI><STRONG><A NAME="item_Boris">Boris Zentner</A></STRONG>
<P><LI><STRONG><A NAME="item_Brian">Brian Moseley</A></STRONG>
<P><LI><STRONG><A NAME="item_Carl">Carl Hansen</A></STRONG>
<P><LI><STRONG><A NAME="item_Chad">Chad K. Lewis</A></STRONG>
@@ -713,6 +717,7 @@
<P><LI><STRONG><A NAME="item_Christophe">Christophe Dupre</A></STRONG>
<P><LI><STRONG><A NAME="item_Cliff">Cliff Rayman</A></STRONG>
<P><LI><STRONG><A NAME="item_Craig">Craig</A></STRONG>
+<P><LI><STRONG><A NAME="item_Daniel">Daniel Bohling</A></STRONG>
<P><LI><STRONG><A NAME="item_Daniel">Daniel Koch</A></STRONG>
<P><LI><STRONG><A NAME="item_Daniel">Daniel W. Burke</A></STRONG>
<P><LI><STRONG><A NAME="item_Darren">Darren Chamberlain</A></STRONG>
@@ -738,11 +743,11 @@
<P><LI><STRONG><A NAME="item_Frank">Frank Schoeters</A></STRONG>
<P><LI><STRONG><A NAME="item_Garr">Garr Updegraff</A></STRONG>
<P><LI><STRONG><A NAME="item_Ged">Ged Haywood</A></STRONG>
-<P><LI><STRONG><A NAME="item_Ged">Ged W. Haywood</A></STRONG>
<P><LI><STRONG><A NAME="item_Geoff">Geoff Crawshaw</A></STRONG>
<P><LI><STRONG><A NAME="item_Geoffrey">Geoffrey Young</A></STRONG>
<P><LI><STRONG><A NAME="item_Gerald">Gerald Richter</A></STRONG>
<P><LI><STRONG><A NAME="item_Gerd">Gerd Knops</A></STRONG>
+<P><LI><STRONG><A NAME="item_Glenn">Glenn</A></STRONG>
<P><LI><STRONG><A NAME="item_Greg">Greg Cope</A></STRONG>
<P><LI><STRONG><A NAME="item_Greg">Greg Stark</A></STRONG>
<P><LI><STRONG><A NAME="item_Gunther">Gunther Birznieks</A></STRONG>
@@ -752,13 +757,17 @@
<P><LI><STRONG><A NAME="item_Howard">Howard Jones</A></STRONG>
<P><LI><STRONG><A NAME="item_Hunter">Hunter Monroe</A></STRONG>
<P><LI><STRONG><A NAME="item_Ilya">Ilya Obshadko</A></STRONG>
+<P><LI><STRONG><A NAME="item_Ime">Ime Smits</A></STRONG>
+<P><LI><STRONG><A NAME="item_Issac">Issac Goldstand</A></STRONG>
<P><LI><STRONG><A NAME="item_James">James Furness</A></STRONG>
<P><LI><STRONG><A NAME="item_James">James G Smith</A></STRONG>
+<P><LI><STRONG><A NAME="item_James">James W Walden</A></STRONG>
<P><LI><STRONG><A NAME="item_Jan">Jan Peter Hecking</A></STRONG>
<P><LI><STRONG><A NAME="item_Jason">Jason Bodnar</A></STRONG>
<P><LI><STRONG><A NAME="item_Jason">Jason Rhinelander</A></STRONG>
<P><LI><STRONG><A NAME="item_Jauder">Jauder Ho</A></STRONG>
<P><LI><STRONG><A NAME="item_Jay">Jay J</A></STRONG>
+<P><LI><STRONG><A NAME="item_Jean">Jean-Louis Guenego</A></STRONG>
<P><LI><STRONG><A NAME="item_Jeff">Jeff Chan</A></STRONG>
<P><LI><STRONG><A NAME="item_Jeff">Jeff Rowe</A></STRONG>
<P><LI><STRONG><A NAME="item_Jeffrey">Jeffrey W. Baker</A></STRONG>
@@ -775,14 +784,18 @@
<P><LI><STRONG><A NAME="item_Jonathan">Jonathan Peterson</A></STRONG>
<P><LI><STRONG><A NAME="item_Joshua">Joshua Chamas</A></STRONG>
<P><LI><STRONG><A NAME="item_Kavitha">Kavitha</A></STRONG>
+<P><LI><STRONG><A NAME="item_Kees">Kees Vonk</A></STRONG>
<P><LI><STRONG><A NAME="item_Ken">Ken Williams</A></STRONG>
<P><LI><STRONG><A NAME="item_Kenny">Kenny Gatdula</A></STRONG>
<P><LI><STRONG><A NAME="item_Kevin">Kevin Murphy</A></STRONG>
+<P><LI><STRONG><A NAME="item_Kevin">Kevin Swope</A></STRONG>
<P><LI><STRONG><A NAME="item_Lance">Lance Cleveland</A></STRONG>
<P><LI><STRONG><A NAME="item_Larry">Larry Leszczynski</A></STRONG>
<P><LI><STRONG><A NAME="item_Leslie">Leslie Mikesell</A></STRONG>
<P><LI><STRONG><A NAME="item_Lincoln">Lincoln Stein</A></STRONG>
+<P><LI><STRONG><A NAME="item_Lupe">Lupe Christoph</A></STRONG>
<P><LI><STRONG><A NAME="item_Mads">Mads Toftum</A></STRONG>
+<P><LI><STRONG><A NAME="item_Marc">Marc Lehmann</A></STRONG>
<P><LI><STRONG><A NAME="item_Marcel">Marcel Grunauer</A></STRONG>
<P><LI><STRONG><A NAME="item_Mark">Mark Mills</A></STRONG>
<P><LI><STRONG><A NAME="item_Mark">Mark Summerfield</A></STRONG>
@@ -795,8 +808,10 @@
<P><LI><STRONG><A NAME="item_Michael">Michael Hall</A></STRONG>
<P><LI><STRONG><A NAME="item_Michael">Michael Rendell</A></STRONG>
<P><LI><STRONG><A NAME="item_Michael">Michael Schout</A></STRONG>
+<P><LI><STRONG><A NAME="item_Michele">Michele Beltrame</A></STRONG>
<P><LI><STRONG><A NAME="item_Mike">Mike Depot</A></STRONG>
<P><LI><STRONG><A NAME="item_Mike">Mike Fletcher</A></STRONG>
+<P><LI><STRONG><A NAME="item_Mike">Mike MacKenzie</A></STRONG>
<P><LI><STRONG><A NAME="item_Mike">Mike Miller</A></STRONG>
<P><LI><STRONG><A NAME="item_Nancy">Nancy Lin</A></STRONG>
<P><LI><STRONG><A NAME="item_Nathan">Nathan Torkington</A></STRONG>
@@ -804,8 +819,10 @@
<P><LI><STRONG><A NAME="item_Neil">Neil Conway</A></STRONG>
<P><LI><STRONG><A NAME="item_Nick">Nick Tonkin</A></STRONG>
<P><LI><STRONG><A NAME="item_Oleg">Oleg Bartunov</A></STRONG>
+<P><LI><STRONG><A NAME="item_Owen">Owen Williams</A></STRONG>
<P><LI><STRONG><A NAME="item_Pascal">Pascal Eeftinck</A></STRONG>
<P><LI><STRONG><A NAME="item_Patrick">Patrick</A></STRONG>
+<P><LI><STRONG><A NAME="item_Paul">Paul Cotter</A></STRONG>
<P><LI><STRONG><A NAME="item_Pavel">Pavel Shmidt</A></STRONG>
<P><LI><STRONG><A NAME="item_Perrin">Perrin Harkins</A></STRONG>
<P><LI><STRONG><A NAME="item_Peter">Peter Galbavy</A></STRONG>
@@ -827,7 +844,7 @@
<P><LI><STRONG><A NAME="item_Richard">Richard More</A></STRONG>
<P><LI><STRONG><A NAME="item_Rick">Rick Myers</A></STRONG>
<P><LI><STRONG><A NAME="item_Robert">Robert Mathews</A></STRONG>
-<P><LI><STRONG><A NAME="item_Robin">Robin Berjon</A></STRONG>
+<P><LI><STRONG><A NAME="item_Robin">Robin Bjorn</A></STRONG>
<P><LI><STRONG><A NAME="item_Rodger">Rodger Donaldson</A></STRONG>
<P><LI><STRONG><A NAME="item_Ron">Ron Pero</A></STRONG>
<P><LI><STRONG><A NAME="item_Roy">Roy Nasser</A></STRONG>
@@ -838,16 +855,20 @@
<P><LI><STRONG><A NAME="item_Shane">Shane Nay</A></STRONG>
<P><LI><STRONG><A NAME="item_Stephane">Stephane Benoit</A></STRONG>
<P><LI><STRONG><A NAME="item_Stephen">Stephen Judd</A></STRONG>
+<P><LI><STRONG><A NAME="item_Steve">Steve Fink</A></STRONG>
<P><LI><STRONG><A NAME="item_Steve">Steve Reppucci</A></STRONG>
<P><LI><STRONG><A NAME="item_Steve">Steve Willer</A></STRONG>
+<P><LI><STRONG><A NAME="item_Surat">Surat Singh Bhati</A></STRONG>
<P><LI><STRONG><A NAME="item_Terry">Terry West</A></STRONG>
<P><LI><STRONG><A NAME="item_Tim">Tim Bunce</A></STRONG>
+<P><LI><STRONG><A NAME="item_Todd">Todd Finney</A></STRONG>
<P><LI><STRONG><A NAME="item_Tom">Tom Brown</A></STRONG>
<P><LI><STRONG><A NAME="item_Tom">Tom Christiansen</A></STRONG>
<P><LI><STRONG><A NAME="item_Tom">Tom Hughes</A></STRONG>
<P><LI><STRONG><A NAME="item_Tom">Tom Mornini</A></STRONG>
<P><LI><STRONG><A NAME="item_Tuomas">Tuomas Salo</A></STRONG>
<P><LI><STRONG><A NAME="item_Tzvetan">Tzvetan Stoyanov</A></STRONG>
+<P><LI><STRONG><A NAME="item_Ulrich">Ulrich Neumerkel</A></STRONG>
<P><LI><STRONG><A NAME="item_Ulrich">Ulrich Pfeifer</A></STRONG>
<P><LI><STRONG><A NAME="item_Vivek">Vivek Khera</A></STRONG>
<P><LI><STRONG><A NAME="item_Ward">Ward Vandewege</A></STRONG>
@@ -855,6 +876,7 @@
<P><LI><STRONG><A NAME="item_Will">Will Trillich</A></STRONG>
<P><LI><STRONG><A NAME="item_Yann">Yann Kerhervé</A></STRONG>
<P><LI><STRONG><A NAME="item_Yann">Yann Ramin</A></STRONG>
+<P><LI>
<P><LI><STRONG><A NAME="item_Did">Did I miss your name? Tell me!</A></STRONG>
</UL>
<P>
@@ -917,7 +939,7 @@
<td align=center valign=center>
<b><font size=-1>Written by <a
-href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 05/05/2001
+href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 11/15/2001
</font></b>
<br>
1.12 +5125 -5149modperl-site/guide/mod_perl_guide.pdf.gz
<<Binary file>>
1.24 +62 -1 modperl-site/guide/modules.html
Index: modules.html
===================================================================
RCS file: /home/cvs/modperl-site/guide/modules.html,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -r1.23 -r1.24
--- modules.html 2001/10/16 16:08:35 1.23
+++ modules.html 2001/11/15 09:04:54 1.24
@@ -52,6 +52,8 @@
<LI><A HREF="#Apache_LogSTDERR">Apache::LogSTDERR</A>
<LI><A HREF="#Apache_RedirectLogFix">Apache::RedirectLogFix</A>
<LI><A HREF="#Apache_SubProcess">Apache::SubProcess</A>
+ <LI><A HREF="#Module_Use_Log_and_Load_used_">Module::Use - Log and Load used
Perl modules</A>
+ <LI><A HREF="#Apache_ConfigFile_Parse_an_Ap">Apache::ConfigFile - Parse an
Apache style httpd.conf config file</A>
</UL>
</div>
@@ -1199,6 +1201,65 @@
external program prints the data that it read to STDOUT, the main program
intercepts it and sends to the client's socket (browser in most cases).
+<P>
+[ <B><FONT SIZE=-1><A HREF="#toc">TOC</A></FONT></B> ]
+<HR>
+<CENTER><H1><A NAME="Module_Use_Log_and_Load_used_">Module::Use - Log and Load used
Perl modules</A></H1></CENTER>
+<P>
+<CODE>Module::Use</CODE> records the modules used over the course of the Perl
interpreter's
+lifetime. If the logging module is able, the old logs are read and
+frequently used modules are automatically loaded.
+
+<P>
+For example if configured as:
+
+<P>
+
+ <table>
+ <tr>
+
+ <td bgcolor="#eeeeee" width="1">
+
+ </td>
+
+ <td>
+ <pre> <Perl>
+ use Module::Use (Counting, Logger => "Debug");
+ </Perl></pre>
+ </td>
+
+ </tr>
+ </table>
+ <P>
+
+ <table>
+ <tr>
+
+ <td bgcolor="#eeeeee" width="1">
+
+ </td>
+
+ <td>
+ <pre> PerlChildExitHandler Module::Use</pre>
+ </td>
+
+ </tr>
+ </table>
+ <P>
+it will only record the used modules when the child exists, logging
+everything (debug level).
+
+<P>
+[ <B><FONT SIZE=-1><A HREF="#toc">TOC</A></FONT></B> ]
+<HR>
+<CENTER><H1><A NAME="Apache_ConfigFile_Parse_an_Ap">Apache::ConfigFile - Parse an
Apache style httpd.conf config file</A></H1></CENTER>
+<P>
+This module parses <EM>httpd.conf</EM>, or any compatible config file, and provides
methods for accessing the
+values from the parsed file.
+
+<P>
+See the module manpage for more information.
+
[ <B><FONT SIZE=-1><A HREF="#toc">TOC</A></FONT></B> ]
<HR>
@@ -1252,7 +1313,7 @@
<td align=center valign=center>
<b><font size=-1>Written by <a
-href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 05/22/2001
+href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 11/06/2001
</font></b>
<br>
1.18 +1 -1 modperl-site/guide/multiuser.html
Index: multiuser.html
===================================================================
RCS file: /home/cvs/modperl-site/guide/multiuser.html,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- multiuser.html 2001/04/27 16:57:19 1.17
+++ multiuser.html 2001/11/15 09:04:54 1.18
@@ -512,7 +512,7 @@
<td align=center valign=center>
<b><font size=-1>Written by <a
-href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 03/11/2001
+href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 09/14/2001
</font></b>
<br>
1.34 +1 -6 modperl-site/guide/performance.html
Index: performance.html
===================================================================
RCS file: /home/cvs/modperl-site/guide/performance.html,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -r1.33 -r1.34
--- performance.html 2001/09/02 14:27:00 1.33
+++ performance.html 2001/11/15 09:04:54 1.34
@@ -10736,11 +10736,6 @@
See your preferred compiler's man page for detailed information about
optimization.
-<P>
-Also see: <A
-HREF="http://members.nbci.com/Alex_Maranda/gnuintel/GNUintel.htm">http://members.nbci.com/Alex_Maranda/gnuintel/GNUintel.htm</A>
-
-
[ <B><FONT SIZE=-1><A HREF="#toc">TOC</A></FONT></B> ]
<HR>
@@ -10794,7 +10789,7 @@
<td align=center valign=center>
<b><font size=-1>Written by <a
-href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 06/19/2001
+href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 10/26/2001
</font></b>
<br>
1.20 +1 -1 modperl-site/guide/perl.html
Index: perl.html
===================================================================
RCS file: /home/cvs/modperl-site/guide/perl.html,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -r1.19 -r1.20
--- perl.html 2001/09/02 14:27:00 1.19
+++ perl.html 2001/11/15 09:04:54 1.20
@@ -4686,7 +4686,7 @@
<td align=center valign=center>
<b><font size=-1>Written by <a
-href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 06/09/2001
+href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 09/14/2001
</font></b>
<br>
1.35 +35 -32 modperl-site/guide/porting.html
Index: porting.html
===================================================================
RCS file: /home/cvs/modperl-site/guide/porting.html,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -r1.34 -r1.35
--- porting.html 2001/09/02 14:27:00 1.34
+++ porting.html 2001/11/15 09:04:54 1.35
@@ -2044,8 +2044,8 @@
my $q = CGI->new;
print $q->header(-type=>'text/html');
- print $q->p(qq{$fname $lname holds the patch pumpkin
- for this Perl release.});</pre>
+ print $q->p("$fname $lname holds the patch pumpkin" .
+ "for this Perl release.");</pre>
</td>
</tr>
@@ -2117,18 +2117,19 @@
<td>
<pre> use vars qw(%MODIFIED);
sub reread_conf{
- my $file = shift;
- return unless $file;
- return unless -e $file and -r _;
- unless ($MODIFIED{$file} and $MODIFIED{$file} == -M _){
- my $result;
- unless ($result = do $file) {
- warn "couldn't parse $file: $@" if $@;
- warn "couldn't do $file: $!" unless defined $result;
- warn "couldn't run $file" unless $result;
+ my $file = shift;
+ return unless defined $file;
+ return unless -e $file and -r _;
+ my $mod = -M _;
+ unless (exists $MODIFIED{$file} and $MODIFIED{$file} == $mod) {
+ my $result;
+ unless ($result = do $file) {
+ warn "couldn't parse $file: $@" if $@;
+ warn "couldn't do $file: $!" unless defined $result;
+ warn "couldn't run $file" unless $result;
+ }
+ $MODIFIED{$file} = $mod; # Update the MODIFICATION times
}
- $MODIFIED{$file} = -M _; # Update the MODIFICATION times
- }
} # end of reread_conf</pre>
</td>
@@ -2218,22 +2219,23 @@
print $q->header(-type=>'text/plain');
my $config_file = "./config.pl";
reread_conf($config_file);
- print $q->p(qq{$fname $lname holds the patch pumpkin
- for this Perl release.});
+ print $q->p("$fname $lname holds the patch pumpkin" .
+ "for this Perl release.");
sub reread_conf{
- my $file = shift;
- return unless $file;
- return unless -e $file and -r _;
- unless ($MODIFIED{$file} and $MODIFIED{$file} == -M _){
- my $result;
- unless ($result = do $file) {
- warn "couldn't parse $file: $@" if $@;
- warn "couldn't do $file: $!" unless defined $result;
- warn "couldn't run $file" unless $result;
+ my $file = shift;
+ return unless defined $file;
+ return unless -e $file and -r _;
+ my $mod = -M _;
+ unless ($MODIFIED{$file} and $MODIFIED{$file} == $mod) {
+ my $result;
+ unless ($result = do $file) {
+ warn "couldn't parse $file: $@" if $@;
+ warn "couldn't do $file: $!" unless defined $result;
+ warn "couldn't run $file" unless $result;
+ }
+ $MODIFIED{$file} = $mod; # Update the MODIFICATION times
}
- $MODIFIED{$file} = -M _; # Update the MODIFICATION times
- }
} # end of reread_conf</pre>
</td>
@@ -2406,7 +2408,8 @@
# push to hash if was changed
$updates{$_} = $new_val
- if defined $q->param("prev_".$_) and $new_val ne
$q->param("prev_".$_);
+ if defined $q->param("prev_".$_)
+ and $new_val ne $q->param("prev_".$_);
}
# Note that we cannot trust the previous values of the variables
@@ -4039,7 +4042,7 @@
When writing your own handlers and scripts with the Perl Apache API the
proper way to send the HTTP header is with the
<CODE>send_http_header()</CODE> method. If you need to add or override
-methods you can use the <CODE>headers_out()</CODE> method:
+methods you can use the <CODE>header_out()</CODE> method:
<P>
@@ -4051,8 +4054,8 @@
</td>
<td>
- <pre> $r->headers_out("Server" => "Apache Next
Generation 10.0");
- $r->headers_out("Date" => "Tue, 28 Dec 1999 18:49:41
GMT");</pre>
+ <pre> $r->header_out("Server" => "Apache Next
Generation 10.0");
+ $r->header_out("Date" => "Tue, 28 Dec 1999 18:49:41
GMT");</pre>
</td>
</tr>
@@ -4106,7 +4109,7 @@
</td>
<td>
- <pre> headers_out("Content-type" =>
"text/plain");</pre>
+ <pre> $r->header_out("Content-type" =>
"text/plain");</pre>
</td>
</tr>
@@ -6414,7 +6417,7 @@
<td align=center valign=center>
<b><font size=-1>Written by <a
-href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 08/01/2001
+href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 10/08/2001
</font></b>
<br>
1.33 +1 -1 modperl-site/guide/scenario.html
Index: scenario.html
===================================================================
RCS file: /home/cvs/modperl-site/guide/scenario.html,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -r1.32 -r1.33
--- scenario.html 2001/09/02 14:27:01 1.32
+++ scenario.html 2001/11/15 09:04:54 1.33
@@ -3343,7 +3343,7 @@
<td align=center valign=center>
<b><font size=-1>Written by <a
-href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 05/05/2001
+href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 09/14/2001
</font></b>
<br>
1.17 +1 -1 modperl-site/guide/security.html
Index: security.html
===================================================================
RCS file: /home/cvs/modperl-site/guide/security.html,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- security.html 2001/01/11 13:48:23 1.16
+++ security.html 2001/11/15 09:04:54 1.17
@@ -545,7 +545,7 @@
<td align=center valign=center>
<b><font size=-1>Written by <a
-href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 08/20/2000
+href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 09/14/2001
</font></b>
<br>
1.31 +77 -5 modperl-site/guide/snippets.html
Index: snippets.html
===================================================================
RCS file: /home/cvs/modperl-site/guide/snippets.html,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -r1.30 -r1.31
--- snippets.html 2001/09/02 14:27:01 1.30
+++ snippets.html 2001/11/15 09:04:54 1.31
@@ -49,6 +49,7 @@
<LI><A HREF="#Passing_and_Preserving_Custom_Da">Passing and Preserving Custom
Data Structures Between Handlers</A>
<LI><A HREF="#Passing_Notes_Between_mod_perl_a">Passing Notes Between mod_perl
and other (non-Perl) Apache Modules</A>
<LI><A HREF="#Passing_Environment_Variables_Be">Passing Environment Variables
Between Handlers</A>
+ <LI><A HREF="#Verifying_Whether_A_Request_Was_">Verifying Whether A Request
Was Received Over An SSL Connection</A>
<LI><A HREF="#CGI_params_in_the_mod_perl_ish_">CGI::params in the mod_perl-ish
Way</A>
<LI><A HREF="#Subclassing_Apache_Request">Subclassing Apache::Request</A>
<LI><A HREF="#Sending_Email_from_mod_perl">Sending Email from mod_perl</A>
@@ -393,9 +394,9 @@
<CENTER><H1><A NAME="Reusing_Data_from_POST_request">Reusing Data from POST
request</A></H1></CENTER>
<P>
What happens if you need to access the POSTed data more than once, say to
-reuse it on subsequent requests? POSTed data comes directly from the
-socket, and at the low level data can only be read from a socket once. So
-you have to store it to make it available for reuse.
+reuse it in subsequent handlers of the same request? POSTed data comes
+directly from the socket, and at the low level data can only be read from a
+socket once. So you have to store it to make it available for reuse.
<P>
There is an experimental option for <CODE>Makefile.PL</CODE> called
@@ -488,6 +489,11 @@
<CODE>$r->args</CODE> doesn't go away (unless you make it go away by resetting
it).
<P>
+If you are using <CODE>Apache::Request</CODE>, it solves this problem for you with
its <CODE>instance()</CODE> class
+method, which allows <CODE>Apache::Request</CODE> to be a singleton. This means
that whenever you call
+<CODE>Apache::Request</CODE>-><CODE>instance()</CODE> within a single request
you always get the same <CODE>Apache::Request</CODE> object back.
+
+<P>
[ <B><FONT SIZE=-1><A HREF="#toc">TOC</A></FONT></B> ]
<HR>
<CENTER><H1><A NAME="Redirecting_POST_Requests">Redirecting POST
Requests</A></H1></CENTER>
@@ -918,7 +924,7 @@
my $r = shift;
# prepare the cookie in $cookie
$r->err_headers_out->add('Set-Cookie' => $cookie);
- $r->headers_out(Location => $location);
+ $r->headers_out->set(Location => $location);
$r->status(REDIRECT);
$r->send_http_header;
return OK;</pre>
@@ -1169,6 +1175,72 @@
<P>
[ <B><FONT SIZE=-1><A HREF="#toc">TOC</A></FONT></B> ]
<HR>
+<CENTER><H1><A NAME="Verifying_Whether_A_Request_Was_">Verifying Whether A Request
Was Received Over An SSL Connection</A></H1></CENTER>
+<P>
+Just like <CODE>$ENV{MODPERL}</CODE> is checked to see whether the code is run
under mod_perl, <CODE>$ENV{HTTPS}</CODE> is set by ssl modules and therefore can be
used to check whether a request
+is running over SSL connection. For example:
+
+<P>
+
+ <table>
+ <tr>
+
+ <td bgcolor="#eeeeee" width="1">
+
+ </td>
+
+ <td>
+ <pre> print "SSL" if $ENV{HTTPS};</pre>
+ </td>
+
+ </tr>
+ </table>
+ <P>
+If <CODE>PerlSetupEnv Off</CODE> setting is in effect, <CODE>$ENV{HTTPS}</CODE>
won't be available, and then:
+
+<P>
+
+ <table>
+ <tr>
+
+ <td bgcolor="#eeeeee" width="1">
+
+ </td>
+
+ <td>
+ <pre> print "SSL" if $r->subprocess_env('https');</pre>
+ </td>
+
+ </tr>
+ </table>
+ <P>
+should be used instead.
+
+<P>
+Note that it's also possible to check the scheme:
+
+<P>
+
+ <table>
+ <tr>
+
+ <td bgcolor="#eeeeee" width="1">
+
+ </td>
+
+ <td>
+ <pre> print "SSL" if Apache::URI->parse($r)->scheme =~
m/^https/;</pre>
+ </td>
+
+ </tr>
+ </table>
+ <P>
+but it's not one hundred percent certain unless you control the server and
+you know that you run a secure server on the port 443.
+
+<P>
+[ <B><FONT SIZE=-1><A HREF="#toc">TOC</A></FONT></B> ]
+<HR>
<CENTER><H1><A NAME="CGI_params_in_the_mod_perl_ish_">CGI::params in the
mod_perl-ish Way</A></H1></CENTER>
<P>
You can retrieve the request parameters in a similar to <CODE>CGI::params</CODE>
@@ -2362,7 +2434,7 @@
<td align=center valign=center>
<b><font size=-1>Written by <a
-href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 08/01/2001
+href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 11/06/2001
</font></b>
<br>
1.28 +1 -1 modperl-site/guide/start.html
Index: start.html
===================================================================
RCS file: /home/cvs/modperl-site/guide/start.html,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -r1.27 -r1.28
--- start.html 2001/09/02 14:27:01 1.27
+++ start.html 2001/11/15 09:04:54 1.28
@@ -257,7 +257,7 @@
<td align=center valign=center>
<b><font size=-1>Written by <a
-href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 05/05/2001
+href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 09/14/2001
</font></b>
<br>
1.21 +63 -1 modperl-site/guide/strategy.html
Index: strategy.html
===================================================================
RCS file: /home/cvs/modperl-site/guide/strategy.html,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -r1.20 -r1.21
--- strategy.html 2001/09/02 14:27:01 1.20
+++ strategy.html 2001/11/15 09:04:54 1.21
@@ -50,6 +50,7 @@
<LI><A HREF="#The_Squid_Server">The Squid Server</A>
<LI><A HREF="#Apache_s_mod_proxy">Apache's mod_proxy</A>
+ <LI><A HREF="#Closing_Lingering_Connections_wi">Closing Lingering
Connections with Lingerd</A>
</UL>
<LI><A HREF="#When_One_Machine_is_not_Enough_f">When One Machine is not Enough
for RDBMS Database and mod_perl</A>
@@ -885,6 +886,67 @@
<P>
[ <B><FONT SIZE=-1><A HREF="#toc">TOC</A></FONT></B> ]
<HR>
+<CENTER><H2><A NAME="Closing_Lingering_Connections_wi">Closing Lingering
Connections with Lingerd</A></H2></CENTER>
+<P>
+Because of some technical complications in TCP/IP, at the end of each
+client connection, it is not enough for Apache to close the socket and
+forget about it; instead, it needs to spend about one second
+<EM>lingering</EM> on the client. (More details can be found at <A
+HREF="http://httpd.apache.org/docs/misc/fin_wait_2.html">http://httpd.apache.org/docs/misc/fin_wait_2.html</A>)
+
+
+<P>
+Lingerd is a daemon (service) designed to take over the job of properly
+closing network connections from an http server like Apache and immediately
+freeing it to handle a new connection.
+
+<P>
+<CODE>lingerd</CODE> can only do an effective job if HTTP <CODE>Keep-Alive</CODE>s
are turned off; since <CODE>Keep-Alive</CODE>s are useful for images, the recommended
setup is to have <CODE>lingerd</CODE> serving mod_perl enabled Apache and plain Apache
for images and other
+static objects.
+
+<P>
+With a <CODE>lingerd</CODE> setup, you don't have the proxy, so the buffering chain
we have presented
+before for the proxy setup is much shorter here:
+
+<P>
+FIGURE:
+
+<P>
+
+ <table>
+ <tr>
+
+ <td bgcolor="#eeeeee" width="1">
+
+ </td>
+
+ <td>
+ <pre> | Apache Kernel |TCP/IP `o'
+ | [mod_perl]=>[sendbuf] |======> /|\
+ | | / \</pre>
+ </td>
+
+ </tr>
+ </table>
+ <P>
+Hence in this setup it becomes more important to have a big enough kernel
+send buffer.
+
+<P>
+With lingerd, a big enough kernel send buffer, and keep-alives off, the job
+of spoonfeeding the data to a slow client is done by the OS kernel in the
+background. As a result, <CODE>lingerd</CODE> makes it possible to serve the same
load using considerably fewer Apache
+processes. This translates into a reduced load on the server. It can be
+used as an alternative to the proxy setups we have seen so far.
+
+<P>
+For more information about <CODE>lingerd</CODE> see: <A
+HREF="http://www.iagora.com/about/software/lingerd/">http://www.iagora.com/about/software/lingerd/</A>
+
+
+<P>
+[ <B><FONT SIZE=-1><A HREF="#toc">TOC</A></FONT></B> ]
+<HR>
<CENTER><H1><A NAME="When_One_Machine_is_not_Enough_f">When One Machine is not
Enough for RDBMS Database and mod_perl</A></H1></CENTER>
<P>
Imagine a scenario where you start your business as a small service
@@ -1550,7 +1612,7 @@
<td align=center valign=center>
<b><font size=-1>Written by <a
-href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 07/25/2001
+href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 09/19/2001
</font></b>
<br>
1.13 +15 -1 modperl-site/guide/troubleshooting.html
Index: troubleshooting.html
===================================================================
RCS file: /home/cvs/modperl-site/guide/troubleshooting.html,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- troubleshooting.html 2001/09/02 14:27:01 1.12
+++ troubleshooting.html 2001/11/15 09:04:55 1.13
@@ -39,6 +39,7 @@
<LI><A HREF="#Configuration_and_Startup">Configuration and Startup</A>
<UL>
+ <LI><A HREF="#SegFaults_During_Startup">SegFaults During Startup</A>
<LI><A HREF="#libexec_libperl_so_open_failed_">libexec/libperl.so:
open failed: No such file or directory</A>
<LI><A HREF="#install_driver_Oracle_failed_C">install_driver(Oracle)
failed: Can't load '.../DBD/Oracle/Oracle.so' for module DBD::Oracle</A>
<LI><A HREF="#Invalid_command_PerlHandler_">Invalid command
'PerlHandler'...</A>
@@ -169,6 +170,19 @@
<P>
[ <B><FONT SIZE=-1><A HREF="#toc">TOC</A></FONT></B> ]
<HR>
+<CENTER><H2><A NAME="SegFaults_During_Startup">SegFaults During
Startup</A></H2></CENTER>
+<P>
+You have to build mod_perl with the same compiler as Perl was built with.
+Otherwise you may see segmentation faults and other weird things happen.
+
+<P>
+However if this is not the situation and you still experience segmentation
+faults, please refer to the <EM>SUPPORT</EM> file in the mod_perl source
distribution and post the trace from the core
+file as explained there.
+
+<P>
+[ <B><FONT SIZE=-1><A HREF="#toc">TOC</A></FONT></B> ]
+<HR>
<CENTER><H2><A NAME="libexec_libperl_so_open_failed_">libexec/libperl.so: open
failed: No such file or directory</A></H2></CENTER>
<P>
If when you run the server you get the following error:
@@ -1387,7 +1401,7 @@
<td align=center valign=center>
<b><font size=-1>Written by <a
-href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 05/07/2001
+href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 10/05/2001
</font></b>
<br>
1.3 +10 -10 modperl-site/guide/code/lwp-bench.pl
Index: lwp-bench.pl
===================================================================
RCS file: /home/cvs/modperl-site/guide/code/lwp-bench.pl,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- lwp-bench.pl 2001/09/02 14:27:03 1.2
+++ lwp-bench.pl 2001/11/15 09:04:57 1.3
@@ -8,8 +8,8 @@
# Configuration
###
-my $nof_parallel_connections = 10;
-my $nof_requests_total = 100;
+my $nof_parallel_connections = 10;
+my $nof_requests_total = 100;
my $timeout = 10;
my @urls = (
'http://www.example.com:81/perl/faq_manager/faq_manager.pl',
@@ -100,7 +100,7 @@
}
###
-# Format errors if any from %errors
+# Format errors if any from %errors
###
my $errors = join(',', map "$_ ($errors{$_})", keys %errors);
$errors = "NONE" unless $errors;
@@ -112,17 +112,17 @@
#@urls = map {($_,".")} @urls;
my @P = (
"URL(s)" => join("\n\t\t ", @urls),
- "Total Requests" => "$nof_requests_total",
+ "Total Requests" => $nof_requests_total * @urls,
"Parallel Agents" => $nof_parallel_connections,
"Succeeded" => sprintf("$succeeded (%.2f%%)\n",
- $succeeded * 100 / ($nof_requests_total * @urls) ),
+ $succeeded * 100 / ( $nof_requests_total * @urls )
),
"Errors" => $errors,
"Total Time" => sprintf("%.2f secs\n", $total_time),
- "Throughput" => sprintf("%.2f Requests/sec\n",
- $nof_requests_total / $total_time),
- "Latency" => sprintf("%.2f secs/Request",
- ($ua->get_latency_total() || 0) /
- $nof_requests_total),
+ "Throughput" => sprintf("%.2f Requests/sec\n",
+ ( $nof_requests_total * @urls ) / $total_time),
+ "Latency" => sprintf("%.2f secs/Request",
+ ($ua->get_latency_total() || 0) /
+ ( $nof_requests_total * @urls ) ),
);
my ($left, $right);