Update docs to reflect the multiple persistent backends (mod_perl was
mentioned specifically where FastCGI now qualifies as well).
PLP is yet another Perl embedder, primarily for HTML documents. Unlike
with other Perl embedders, there is no need to learn a meta-syntax or
object model: one can just use the normal Perl constructs. PLP runs
PLP is yet another Perl embedder, primarily for HTML documents. Unlike
with other Perl embedders, there is no need to learn a meta-syntax or
object model: one can just use the normal Perl constructs. PLP runs
-under mod_perl for speeds comparable to those of PHP, but can also be
-run as a CGI script.
+under FastCGI and mod_perl for speeds comparable to those of PHP, but
+can also be run as a standard CGI script.
Not only syntax is important, you should also be aware of some other important
features. Your script runs inside the package C<PLP::Script> and shouldn't
leave it. This is because when your script ends, all global variables in the
Not only syntax is important, you should also be aware of some other important
features. Your script runs inside the package C<PLP::Script> and shouldn't
leave it. This is because when your script ends, all global variables in the
-C<PLP::Script> package are destroyed, which is very important if you run under
-mod_perl (they would retain their values if they weren't explicitly destroyed).
+C<PLP::Script> package are destroyed, which is very important if you run a
+persistent backend (they would retain their values if they weren't explicitly
+destroyed).
Until your first output, you are printing to a tied filehandle C<PLPOUT>. On
first output, headers are sent to the browser and C<STDOUT> is selected for
Until your first output, you are printing to a tied filehandle C<PLPOUT>. On
first output, headers are sent to the browser and C<STDOUT> is selected for
BEGIN blocks. BEGIN blocks are executed as soon as possible, before anything
else.
BEGIN blocks. BEGIN blocks are executed as soon as possible, before anything
else.
-Because the interpreter that mod_perl uses never ends, C<END { }> blocks won't
-work properly. You should use C<PLP_END { };> instead. Note that this is a not
-a built-in construct, so it needs proper termination with a semi-colon (as do
-C<eval> and C<do>).
+Unless you're running as CGI, the interpreter won't exit after processing a page,
+so C<END { }> blocks won't work properly. You should use C<PLP_END { };> instead.
+Note that this is a not a built-in construct, so it needs proper termination
+with a semi-colon (as do C<eval> and C<do>).
-Under mod_perl, modules are loaded only once. A good modular design can improve
-performance because of this, but you will have to B<reload> the modules
+When run persistently, modules are loaded only once. A good modular design can
+improve performance because of this, but you will have to B<reload> the modules
yourself when there are newer versions.
The special hashes are tied hashes and do not always behave the way you expect,
yourself when there are newer versions.
The special hashes are tied hashes and do not always behave the way you expect,
=item How can I make PLP faster?
=item How can I make PLP faster?
-With mod_perl, PLP is a lot faster than with CGI. CGI scripts execute an
-external interpreter, but mod_perl is a Perl interpreter inside Apache.
+With mod_perl or FastCGI, PLP is a lot faster than with CGI.
+Instead of executing a new perl process for each request, the same interpreter
+will serve multiple pages.
-=item I already use mod_perl, can I make my scripts even faster?
+=item I already run persistently, can I make my scripts even faster?
Well, you already have scripts that probably are faster than PHP equivalents,
but speed maniacs always want more. Modules are cached, so with a proper module
Well, you already have scripts that probably are faster than PHP equivalents,
but speed maniacs always want more. Modules are cached, so with a proper module
=item Why do my C<END> blocks never get executed?
=item Why do my C<END> blocks never get executed?
-If they are not, you are probably running under mod_perl. The blocks are
-executed when the interpreter stops, but the mod_perl interpreter is not exited
-after the PLP script has ended. Use C<PLP_END> blocks instead. Please note that
-C<PLP_END> is a normal statement, so you may need a semicolon.
+These blocks are executed when the interpreter stops, which only occurs if you
+are running as CGI. To catch the exit of a PLP script, use C<PLP_END> blocks instead.
+Please note that C<PLP_END> is a normal statement, so you may need a semicolon.
<html><body>
<: PLP_END { :>
</body></html>
<: } :>
<html><body>
<: PLP_END { :>
</body></html>
<: } :>
=item Can I disable the error messages?
=item Can I disable the error messages?