Hi all,
I try to precompile a perl script on SERVER start-up using the typical
configuration. But I start the server a get a lot of errors or warnings that
refer to standard Perl modules.
On the other hand, if I try to compile the same script on a CHILD process
start-up, using a very similar configuration everything works fine!
The same situation occurred with every other script that I tried to compile.
These scripts are huge and they use MANY Perl modules.

The problem seems to be that there is a difference between the way that a script
is compiled in
parent apache process and in a apache child.

Has anybody faced the same problem, or knows any info that will help to overcome
it ?


Configuration:
Apache 1.3.20 on Linux
Perl 5.6.1 with itheads
mod_perl 1.25

-----------------------------------------------------------------------------------------
The configuration of the first case is described hereafter:
==== conf/httpd.conf ====
PerlRequire             conf/startup.pl
==== conf/startup.pl ====
use Apache::RegistryLoader;
my $rl = Apache::RegistryLoader->new();
$rl->handler('/Service/top/ig/huge.pl', '/home/dir/www/cgi-bin/huge.pl') ;


When I start the server, messages like this flood the error_log file:

Prototype mismatch: sub Socket::INADDR_ANY vs () at
/opt/irc/ircv2.5/lib/perl5/5.6.1/i686-linux/Socket.pm line 329, <DATA> line 378.
Prototype mismatch: sub Socket::INADDR_BROADCAST vs () at
/opt/irc/ircv2.5/lib/perl5/5.6.1/i686-linux/Socket.pm line 330, <DATA> line 378.
.
.
Subroutine TIEHASH redefined at
/opt/irc/ircv2.5/lib/perl5/5.6.1/i686-linux/DB_File.pm line 32, <DATA> line 378.
Subroutine FETCH redefined at
/opt/irc/ircv2.5/lib/perl5/5.6.1/i686-linux/DB_File.pm line 44, <DATA> line 378.
.
.
When I try to GET http://my.host/Service/top/ig/huge.pl I get more error
messages.

---------------------------------------------------------------------------------------
The configuration of the second case (compile on the child startup) :
==== conf/httpd.conf ====
PerlChildInitHandler    conf::startup
==== conf/startup.pm ====
package conf::startup
use Apache::RegistryLoader;
sub handler {
  my $rl = Apache::RegistryLoader->new();
  $rl->handler('/Service/top/ig/huge.pl', '/home/dir/www/cgi-bin/huge.pl') ;
}

After start-up the script is executed with the Apache::Registry and everything
works fine!



Thanks in advance,
 Kostas
begin:vcard 
n:Lykourgiotis;Konstantinos
x-mozilla-html:FALSE
adr:;;;;;;
version:2.1
email;internet:[EMAIL PROTECTED]
x-mozilla-cpt:;0
fn:Konstantinos Lykourgiotis
end:vcard

Reply via email to