Re: Modperl/Apache deficiencies... Memory usage.

2000-04-25 Thread shane

Justin,
On Tue, Apr 25, 2000 at 11:26:00PM -0400, [EMAIL PROTECTED] wrote:
> On Sat, 15 Apr 2000 [EMAIL PROTECTED] wrote:
> > 
> > > It is very memory inneffecient basically.  Each process of apache has
> > > it's registry which holds the compiled perl scripts in..., a copy of
> > > each for each process.  This has become an issue for one of the
> > > companies that I work for, and I noted from monitoring the list that
> > > some people have apache processes that are upwards of 25Megs, which is
> > > frankly ridiculous.
> >
> 
> Originally I thought this as well.. but, using mod_rewrite, the ratio
> of heavy to light processes can be very high.. some solid figures here:
> our site (dslreports) now handles 200,000 pages a day, every single one
> of them is dynamically generated.. at peak this is 10-20 modperl pages
> a second.. to handle this, we have httpd modperl with MIN, MAX
> and LIMIT of just 8(!) modperl processes, 2 php httpds (just for true type
> font rendering ;-) and as many front-end httpds (mod_rewrite and mod_proxy)
> as required (usually about 100 but can be 200-300 at times). There is
> almost never all 8 modperls running at one time.. even long pages fit
> in the buffers between back end, mod_proxy, and front end meaning its
> hard to catch mod perl in the act of actually servicing requests.

Yes... mod_proxy is the "right way" to really get any sort of serious
stuff hapening in terms of speed.  With mod_proxy you really only need
a few mod_perl processes because no longer is the mod_perl ("heavy")
apache process i/o bound.  It's now CPU bound.  (or should be under
heavy load)  Sounds like your ratio is pretty good.  (modperl/
mod_proxy)  I'd be willing to gamble you could have even less
less mod_perl processes :-).., because they *should* be completely CPU
bound... so really under a "theoretical" machine the optimum number
would be as many processors as you had.  But since mod_proxy/mod_perl
communicate through a socket as opposed to shared memory, there is
still a little i/o action.  (Which is something I'm thinking about
working on too in mod_proxy..., in local mode allow for more efficient
data transfer methods than sockets)  The closer you get to the number
of processors the less context switching involved... although sounds
like you have lots of other stuff running on this box... so this
becomes less of an issue.

> So I find this setup very stable and very flexible .. and would not swap it
> for a pool of interpreters, or a multi-threaded server for all the tea
> in china .. because I dont think either of those models (elegant though
> they may sound, and absolutely the right direction) will be as stable
> for some considerable time.

Hehe... and it is for this exact reason that the actual httpd serving
mechanism hasn't changed much since... well, they started preforking?
Geez... how long ago was that?..., I guess when they started patching
NCSA... so a LONG time ago.  I really think it's time... cross
platform is great, but don't hold back other platforms functionality
just to keep the number of macros in the source down... I mean really.

Its sort of a chicken and the egg scenario..., POSIX.4 was put
together some time ago.  But it was only implemented in Linux in
2.3.28 or later (or so), well it was in some earlier version, but had
some sort of bug.  I think FreeBSD has it too.  But theres no pressure
on anyone else to do anything about it because theres no apps.  But
theres no apps because theres no OS support... :-)... I hate those
sorts of situations.  Who knows when windows will get it?  Maybe
Windows 3k.

(I should note, there have been lots of "tweaks" along the way, but
nothing essentially different in concept)

Thanks,
Shane.

> 
> -Justin



Re: Modperl/Apache deficiencies... Memory usage.

2000-04-25 Thread shane

Doug & modperlers...
  
> however, padlists are not shared.  as i mentioned, i'd like to look at
> using your "garbage collector" for 2.0.  if it could run in it's own
> thread and examine the padlists of idle interpreters, it could be big win.
> i wouldn't want it to release all allocations in the padlist by default.
> maybe be configurable to only release things of a certain size.  what i
> would personally like to see is one that just reports anything that's
> larger than X size, so i can fix the Perl code not copy large chunks of
> data, and/or figure out how to make large chunks of data shared between
> interpreters.  i kinda started this with the B::Size hooks in
> Apache::Status, but you have to dig around the symbol table to find how
> big things are, there's no overall reporting mechanism.

Let me know when you want the garbage collector.  I'll re-write it in
apache style, and add some debugging stuff.  I figure there should be
two pieces.  One that analyzes the packages that are running, the
other that actually kills off variables.  This could be very usefull
for admins that want to analyze what those huge processes really are.
Are they all code?, are they stack variables?  A reporting module
would be really cool, and it would answer a lot of questions that I
have.  So you're right..., I think that's the first piece that should
be implemented.  I just need to re-write it for multiple levels of
recursion (Present version only scans the first level).  Basically
re-hack it to exclude actual cleaning, and just reporting, and maybe
as a secondary module a cleaner.  Something like use
Apache::Cleaner..., in a fully threaded apache only one thread would
be needed.  In a process enviro... arg!... I don't want to think about
that right now... I know the answer but I just hate to say it.

(Maybe like Apache::Memory::Cleaner, and Apache::Memory::Reporter?...
how does that sound?  We'd need some mutexes on the Registry so that
the cleaner doesn't end up cleaning a running Registry Script ... should this extend to Handlers?)

>  
> > One of my concerns is that maybe the apache module API is simply too
> > complex to pull something like this off.  I don't know, but it seems
> > like it should be able to handle something like this.
> 
> if you need a model where the Perl engine is in a different process 
> than Apache, that should be implemented with FastCGI or something else.  
> the overhead of passing the request_rec (and everything it points to)
> between processes for all of the various phases (so mod_perl could
> still everything it can today) would be a nightmare.

I really don't need such a model at this time.  However I was thinking
about it..., and aside from the point that Stas brought up, I think
this would be an interesting avenue to look through... that's
essentially how mato_perl works.  The crazy idea that I forwarded to
Stas was something like this:  The problem with having one thread is
network reads.  This is actually a really big issue all in all.
However, if it were possible to override the "read" and "write"
functions that would sort of "freeze" execution, and put a lock on
this Apache registry entry (and make a unlocked copy BTW), and
transfer it to another thread whos only job was read/write through a
sigqueue interface... that would be REALLY cool for performance/memory
consumption.  Much less context switching overhead, and drastically
reduced memory overhead.  The problem is that who in their right mind
has time for this sort of thing? (:->)  I was thinking of implementing
the writing of mod_proxy like this..., after considering it fully
though, I think it would be even better to write a generalized module
that could stream bits to clients, and use it as a plug in for any
module that doesn't want to waste time streaming out to a 28.8k
connection.  Anyhow... this is my present obsession, and I'm hoping to
have a beta patch to mod_proxy in about a month.  But if I were to
re-implement it as a generic apache module, and give it some state
context, and the ability to read and write, it could be very very
usefull for nearly anything for apache.  (Obviously sigqueue's aren't
implemented on every platform, so either poll(), or select would take
it's place in these scenarios... still more efficient than having a
"heavy" mod perl enabled server sending data to 28.8k client)

Anyhow... thanks Doug,
Shane.
(Man, you've got a good memory... that was over two months ago I
brought up the GC)



Re: newbie help installation problems modperl/apache

2000-04-25 Thread jr

At 08:24 PM 4/25/00 -0600, you wrote:
>You're reading the right INSTALL doc but make sure you follow the 
>directions un the heading "the flexible way". Not the other one. Also go 
>back and reread all the stuff on compiling and configuring on 
>perl.apache.org/guide too.

Yup, I have been following "the flexible way".   Your instructions follow
this, and this is what I followed.  However, you've heard my results.

There are a few updates however, when I copied the apache httpd module to
/usr/sbin, mod_perl's configuration step worked without the apxs warning,
make and make install took longer, and Perlsetenv & perlhandler commands
worked.  hello.world works.  This tells me that either there is a problem
with mod_perl's Makefile.PL, or (more likely) there is something leftover
from the original apache/modperl rpms, which is causing havoc with
mod_perl's Makefile.PL, and screwing up the install. 

Even though hello world is working, the make test is still failing as it
was before.  Further, there is a libperl.a in apache/src/modules/.  

>It sounds like you on a RH Linux box that has (or had) the rpm Apache 
>distro installed. Make it go away. It's a bad thing IMHO.

Yup.  I had done the rpm -e apache mod_perl.  I didnt see any parts left
over.  I dont have the option of reinstalling the os.  I had to do the
apache source because I needed suexec, and you cant get there from the rpms. 


>You shouldn't even be at item 4 unless you get past make test with no 
>errors.  (Don't get so excited I know it's cool but get it working first.)
>
make test fails, but the other stuff works.  go figure.

>Here's what I do to build Apache/mod_perl on my servers (and I haven't had 
>a problem build in really long time, knock on wood).
>


>cd ../apache_1.3.12
>
>./configure --prefix=/opt/www/httpd \
>--activate-module=src/modules/perl/libperl.a \
>--enable-module=rewrite \
>--enable-module=mmap_static \
>--enable-module=log_referer \
>--enable-module=log_agent
>

when trying to get apache to work (before integrating mod_perl), I couldnt
get functions to work correctly without  --enable-module=most and
--enable-shared=max.  I didnt test combinations of these settings.
without this, none of the loadmodule/addmodule directives in the httpd.conf
worked.   On the various lists to which I tried to get help, the silence
was deafening.  I might try to play with these.  

What does your httpd.conf look like?  Loadmodule/Addmodule?   I do a lot of
webhosting, with a ton of namevirtualhosts, cgi-bins, and .htaccess files.

>Jeff Beard
>
Thanks.

jr
John Riehl
IBucks, Inc.
Beverly Hills, Ca. 




design question

2000-04-25 Thread David Hajoglou

I am trying to implement a cross platform auth scheme whereby users log
into a system running in a microsoft environment.  Then, when they want to
check their e-mail, they click a link in the form of:

mail.isoftcorp.com/auth?k=

the key sequence is determined when they log into the main site and it is
databased.  then, they hit my server and I will take the key sequence and
query the databse:

1)  The database returns foo, I deny the request (this I can eaily do)

2)  The database returns bar, I rewirte the request into a post.  The
handler would rerite the request and then turn it back over to apache for
further processing:

my new request would be in thr form of:
$request=HTTP::Request->new(POST=>'http://mail.isoftcotp.com/index.pl',
[var1=>'hojo',var2=>'val2']); #where val1 and val2 are from the DB


However, I do not know how to rewirte the request in this way and use it
in a handler. What would be the proper way to rewrite the request?  Which
handler should I use?

If I need to provide any more info, fell free to ask.  




ANNOUNCE: HTML::Embperl 1.3b3

2000-04-25 Thread Gerald Richter

The URL

ftp://ftp.dev.ecos.de/pub/perl/embperl/HTML-Embperl-1.3b3.tar.gz

has entered CPAN as

  file: $CPAN/authors/id/GRICHTER/HTML-Embperl-1.3b3.tar.gz
  size: 272444 bytes
   md5: a0a28868e85094f7d52f00fa8d046298


Changes since 1.3b2:

   - Fixed SIGSEGV which occurs in cleanup with Perl 5.6. Spotted by 
 Aaron Johnson.
   - Changed make test so it works correctly with new error messages of
 Perl 5.6. 
   - Fixed a bug that Execute will always fail when $@ was set before.
 Patch from Francis J. Lacoste.
   - Changed test so it accpects charset in Content-Type header from
 Apache 1.3.12
   - The outputfile parameter now also works when running under 
 mod_perl. Spotted by Ilia Lobsanov.
   - Makefile.PL warns if you build with a DSO mod_perl < 1.22
   - make test checks that test files are readable by Apache. 
   - Applied a patch from Jens-Uwe Magner to make Embperl work
 with mod_perl 1.22 on AIX. We now require mod_perl 1.22,
 but I should now work as DSO and staticly linked.
   - Applied a patch from Francis J. Lacoste that makes sure
 that when a package name is given the file is always compiled
 into this package. Note: This means that if you specify a
 packagename and the packagename differs from request to
 request, the page is compiled for every package and therfore
 consuming memory on every request. 
   - Added EMBPERL_SESSION_HANDLER_CLASS which allows you to overwrite
 Embperl defaults session handling. Idea form Barrie Slaymaker.
   - Added EmbperlLogo.gif to the distribution, which contains
 "Powered by Embperl".
   - Added Patch from Randy Kobes that makes Embperl compile with
 Apache 1.3.12 and Perl 5.6 on Win32. 
   - Removed some -w warnings form EmbperlObject
   - Added tests for EmbperlObject
   - Fixed a SIGSEGV that occured when Embperl found [*] inside
 a page. Spotted by Barrie Slaymaker.
   - Added epchar.c.min which contains translation tables which
 let's all chars above 128 untouched. This is usefull for
 processing two byte charsets. Patch from Sangmook Yi.
   - The searchpath (EMBPERL_PATH) now uses semikolons (';') instead 
 of colons (':') to avoid problems with Windows drive letters.
 Colons still work on Unix.


-
Gerald Richterecos electronic communication services gmbh
Internetconnect * Webserver/-design/-datenbanken * Consulting

Post:   Tulpenstrasse 5 D-55276 Dienheim b. Mainz
E-Mail: [EMAIL PROTECTED] Voice:+49 6133 925151
WWW:http://www.ecos.de  Fax:  +49 6133 925152
-




Re: Modperl/Apache deficiencies... Memory usage.

2000-04-25 Thread jb

On Sat, 15 Apr 2000 [EMAIL PROTECTED] wrote:
> 
> > It is very memory inneffecient basically.  Each process of apache has
> > it's registry which holds the compiled perl scripts in..., a copy of
> > each for each process.  This has become an issue for one of the
> > companies that I work for, and I noted from monitoring the list that
> > some people have apache processes that are upwards of 25Megs, which is
> > frankly ridiculous.
>

Originally I thought this as well.. but, using mod_rewrite, the ratio
of heavy to light processes can be very high.. some solid figures here:
our site (dslreports) now handles 200,000 pages a day, every single one
of them is dynamically generated.. at peak this is 10-20 modperl pages
a second.. to handle this, we have httpd modperl with MIN, MAX
and LIMIT of just 8(!) modperl processes, 2 php httpds (just for true type
font rendering ;-) and as many front-end httpds (mod_rewrite and mod_proxy)
as required (usually about 100 but can be 200-300 at times). There is
almost never all 8 modperls running at one time.. even long pages fit
in the buffers between back end, mod_proxy, and front end meaning its
hard to catch mod perl in the act of actually servicing requests.

On the same box is mysql (40-60 daemons), constant mail handling, various
other custom perl daemons and utilities, MRTG monitoring of 100s of IP
addresses, a busy ultimate bulletin board (plain cgi - ugh), development
and testing as well sometimes.

This is all handled by two 450mhz processors and 1gig of memory, no swapping,
half of the memory ends up being used by linux for disk caching.. modperl
uses up about 256mb I suppose. With that much traffic, memory leaks, and the
odd SQL query that reads too much, the modperl processes grow slowly to about
40mb each, but get reborn, every 1000 requests, at 28mb again. The load
average hovers around 5.0
I read today drkoop (while going broke) now does 600k pages per day..
I bet they have a couple of million bucks worth of solaris, oracle and IIS,
serving out mainly static content? whats the price/performance problem
with modperl again?

So I find this setup very stable and very flexible .. and would not swap it
for a pool of interpreters, or a multi-threaded server for all the tea
in china .. because I dont think either of those models (elegant though
they may sound, and absolutely the right direction) will be as stable
for some considerable time.

-Justin



RE: ANNOUNCE: Apache::AuthCookie 2.007

2000-04-25 Thread Ken Williams

[EMAIL PROTECTED] (Gerald Richter) wrote:
>Hi Ken,
>
>the patch I send you for overwriting the login_form seems not to be in
>2.007.
>
>Are there any reason for this or did you just forget it?

Hi Gerald,

Actually, neither - it's just that I haven't gotten to it yet.  The changes I
put in 2.007 come from requests/patches people submitted before you. =)  

Your patch looks good, but I haven't had a chance to look closely.  I hope to
get it in there soon in some form.






Re: Modperl/Apache deficiencies... Memory usage.

2000-04-25 Thread Doug MacEachern

On Sat, 15 Apr 2000 [EMAIL PROTECTED] wrote:

> Modperlers...,
> 
> I'd like to start a discussion about the deficiences in Apache/modperl
> and get you feedback with regard to this issue.  The problem as I see
> it is that the process model that Apache uses is very hard on modperl.

mod_perl-2.0/apache-2.0 should solve this (fingers crossed :)

> It is very memory inneffecient basically.  Each process of apache has
> it's registry which holds the compiled perl scripts in..., a copy of
> each for each process.  This has become an issue for one of the
> companies that I work for, and I noted from monitoring the list that
> some people have apache processes that are upwards of 25Megs, which is
> frankly ridiculous.

with 2.0, the syntax tree is shared (at the Perl level)
 
however, padlists are not shared.  as i mentioned, i'd like to look at
using your "garbage collector" for 2.0.  if it could run in it's own
thread and examine the padlists of idle interpreters, it could be big win.
i wouldn't want it to release all allocations in the padlist by default.
maybe be configurable to only release things of a certain size.  what i
would personally like to see is one that just reports anything that's
larger than X size, so i can fix the Perl code not copy large chunks of
data, and/or figure out how to make large chunks of data shared between
interpreters.  i kinda started this with the B::Size hooks in
Apache::Status, but you have to dig around the symbol table to find how
big things are, there's no overall reporting mechanism.
 
> One of my concerns is that maybe the apache module API is simply too
> complex to pull something like this off.  I don't know, but it seems
> like it should be able to handle something like this.

if you need a model where the Perl engine is in a different process 
than Apache, that should be implemented with FastCGI or something else.  
the overhead of passing the request_rec (and everything it points to)
between processes for all of the various phases (so mod_perl could
still everything it can today) would be a nightmare.




Re: Deep recursion on subroutine "Apache::Constants::AUTOLOAD"

2000-04-25 Thread Doug MacEachern

On Tue, 25 Apr 2000, Martin Lichtin wrote:

> Doug MacEachern wrote:
> > > Anyone understand why
> > > perl -we 'use Apache::Constants; Apache::Constants::OK();'
> > > causes this problem?
> > 
> > what version of mod_perl are you using? '
> 
> mod_perl 1.21,  perl 5.00503

ok, well, i don't understand why you're getting this error on the command
line, but Apache::Constants only works inside httpd anyhow.  are you
having a problem using it inside httpd?




Re: Deep Recursion with File::Copy

2000-04-25 Thread Doug MacEachern

On Tue, 25 Apr 2000, Jeremy Blumenfeld wrote:

> Hi.
> We are running Server Version: Apache/1.3.9 (Unix) mod_perl/1.21 on a
> Linux system.
> Having problems with a "Deep Recursion" when using the copy method of
> File::Copy.

my guess is that you're using Perl 5.005_03 and have PerlFreshRestart On
perl 5.6.0 fixes File::Copy so it can be reloaded (see Changes entry
below).  either turn FreshRestart Off or update File::Copy to 5.6.0's
version

[  4753] By: gsar  on 2000/01/05  06:48:22
Log: From: [EMAIL PROTECTED] (Andreas J. Koenig)
 Date: 03 Jan 2000 21:56:02 +0100
 Message-ID: <[EMAIL PROTECTED]>
 Subject: Reloading File::Copy
 Branch: perl
   ! Changes lib/File/Copy.pm t/lib/filecopy.t




RE: mod_perl 2.x/perl 5.6.x ?

2000-04-25 Thread Doug MacEachern

On Sat, 22 Apr 2000, Eric Cholet wrote:

> mod_perl-2.0 requires perl 5.6 to be build with -Dusethreads, which turns
> on threading and multiplicity. 

just to be clear, as you mention below, -Dusetheads isn't required for
mod_perl-2.0, but strongly suggested if you use an mpm other than prefork :)
and i wouldn't say -Dusethreads "turns on threading", it simply makes the
Perl runtime re-entrant (as explained in an earlier message)

> The biggest hurdle I've faced until now is
> that DBI won't build with this threaded perl. Hopefully DBI will be updated
> since the latest version is from july 99.

it compiles with the patch below, not sure if it actually works though :)

> This is for using Apache 2.0's pthread MPM, of course you can build perl
> 5.6 non threaded and use apache 2.0's prefork model but then it's not
> as exciting :-)

maybe not as exciting, but still very important, the 1.3.x model works
quite well for many people, so mod_perl-2.0 will continue to support it.

--- DBI.xs~ Sun Jul 11 19:04:27 1999
+++ DBI.xs  Tue Apr 25 19:05:40 2000
@@ -9,6 +9,13 @@
 
 #include "DBIXS.h" /* DBI public interface for DBD's written in C  */
 
+#ifndef pTHX_
+#define aTHXo_
+#define CopFILEGV(cop) cop->cop_filegv
+#define CopLINE(cop)   cop->cop_line
+#define get_sv perl_get_sv
+#endif
+
 #define MY_VERSION "DBI(" XS_VERSION ")"
 
 #if (defined USE_THREADS || defined PERL_CAPI || defined PERL_OBJECT)
@@ -112,7 +119,7 @@
 
 #   if (PATCHLEVEL == 4) && (SUBVERSION < 68)
 # define dPERINTERP_SV \
-SV *perinterp_sv = perl_get_sv(MY_VERSION, FALSE)
+SV *perinterp_sv = get_sv(MY_VERSION, FALSE)
 #   else
 # define dPERINTERP_SV \
 SV *perinterp_sv = *hv_fetch(PL_modglobal, MY_VERSION, \
@@ -121,7 +128,7 @@
 
 #   define dPERINTERP_PTR(T,name)\
 T name = (T)(perinterp_sv && SvIOK(perinterp_sv) \
- ? SvIVX(perinterp_sv) : NULL)
+ ? (T)SvIVX(perinterp_sv) : NULL)
 #   define dPERINTERP\
 dPERINTERP_SV; dPERINTERP_PTR(PERINTERP_t *, PERINTERP)
 #   define INIT_PERINTERP \
@@ -189,13 +196,13 @@
 DBIS->size= sizeof(*DBIS);
 DBIS->xs_version = DBIXS_VERSION;
 /* publish address of dbistate so dynaloaded DBD's can find it */
-sv_setiv(perl_get_sv(DBISTATE_PERLNAME,1), (IV)DBIS);
+sv_setiv(get_sv(DBISTATE_PERLNAME,1), (IV)DBIS);
 
 DBISTATE_INIT; /* check DBD code to set DBIS from DBISTATE_PERLNAME*/
 
 DBIS->logfp= stderr;
 DBIS->debug= 0;
-DBIS->neatsvpvlen = perl_get_sv("DBI::neat_maxlen", GV_ADDMULTI);
+DBIS->neatsvpvlen = get_sv("DBI::neat_maxlen", GV_ADDMULTI);
 sv_setiv(DBIS->neatsvpvlen, 400);
 /* store some function pointers so DBD's can call our functions*/
 DBIS->getcom= dbih_getcom;
@@ -613,7 +620,7 @@
 if (imp_size == 0) {
/* get size of structure to allocate for common and imp specific data   */
char *imp_size_name = mkvname(imp_stash, "imp_data_size", 0);
-   imp_size = SvIV(perl_get_sv(imp_size_name, 0x05));
+   imp_size = SvIV(get_sv(imp_size_name, 0x05));
if (imp_size == 0)
imp_size = g_imp_maxsize + 64;
 }
@@ -1450,16 +1457,16 @@
fprintf(logfp," during global destruction.");
return;
 }
-if (!curcop->cop_line) {
+if (!CopLINE(curcop)) {
fprintf(logfp," at unknown location!");
return;
 }
-file = SvPV(GvSV(curcop->cop_filegv), len);
+file = SvPV(GvSV(CopFILEGV(curcop)), len);
 if (trace_level<=4) {
if ( (sep=strrchr(file,'/')) || (sep=strrchr(file,'\\')))
file = sep+1;
 }
-fprintf(logfp," at %s line %ld.", file, (long)curcop->cop_line);
+fprintf(logfp," at %s line %ld.", file, (long)CopLINE(curcop));
 }
 
 
@@ -1751,7 +1758,7 @@
 */
I32 markix = TOPMARK;
CV *xscv   = GvCV(imp_msv);
-   (void)(*CvXSUB(xscv))(xscv);/* Call the C code directly */
+   (void)(*CvXSUB(xscv))(aTHXo_ xscv); /* Call the C code directly */
 
if (gimme == G_SCALAR) {/* Enforce sanity in scalar context */
if (++markix != stack_sp - stack_base ) {
@@ -2130,7 +2137,7 @@
Fflush(DBILOGFP);
}
DBIS->debug = level;
-   sv_setiv(perl_get_sv("DBI::dbi_debug",0x5), level);
+   sv_setiv(get_sv("DBI::dbi_debug",0x5), level);
 }
 }
 OUTPUT:
@@ -2226,7 +2233,7 @@
 }
 if (type == '$') { /* lookup scalar variable in implementors stash */
char *vname = mkvname(DBIc_IMP_STASH(imp_xxh), meth, 0);
-   SV *vsv = perl_get_sv(vname, 1);
+   SV *vsv = get_sv(vname, 1);
if (trace)
fprintf(DBILOGFP,"<- %s = %s\n", vname, neatsvpv(vsv,0));
ST(0) = sv_mortalcopy(vsv);




RE: mod_perl 2.x/perl 5.6.x ?

2000-04-25 Thread Doug MacEachern

On Sun, 23 Apr 2000, Gunther Birznieks wrote:
 
> I agree... but to some degree I hope this has been done for many of the 
> major modules and the major DBI modules (eg DBD sybase)... as they ended up 
> having to work on ActiveState's PerlEx which uses a similar model. In a 
> way, PerlEx's model has been a test for mod_perl 2.0.

indeed.  PerlEx uses PERL_OBJECT, which is similar in concept to
USE_ITHREADS.  we all owe a great deal of thanks to ActiveState
for sponsoring Gurusamy Sarathy's work on 5.6.0.  without the USE_ITHREADS
implementation, mod_perl would be next to useless with threaded apache-2.0





Re: mod_perl 2.x/perl 5.6.x ?

2000-04-25 Thread Doug MacEachern

On Sat, 22 Apr 2000, Leslie Mikesell wrote:

> So, does that still leave mod_perl serializing access until
> everything is rewritten to be thread-safe?

no, -Dusethreads with 5.6.0 makes the Perl runtime (aka PerlInterpreter),
re-entrant.  all of Perl's internal globals (symbol table, stacks,
etc.) become part of the PerlInterpreter structure, each interpreter
clone has it's own copy of any writeable data (symbol table, stacks, etc.)
the syntax tree is shared.
this makes it possible to concurrently call subroutines in different
threads, which was not possible with 5.005_03.

this doesn't solve the problem of xs modules or c libraries that are not
thread-safe, we'll have to fix any trouble makers as they pop up.





Re: mod_perl-1.99_01-dev

2000-04-25 Thread Doug MacEachern

On Fri, 21 Apr 2000, Greg Cope wrote:
 
> Does this  mean that we {will|may} be able to use the interpreter pool to
> set up X Perl interpreters (say 20 to service dynamic handlers) with Z
> apache (say 60 to handle static + dynamic content - assuming the dynamic
> content is passed to the Perl interpreters) children, and hence have
> significant memory savings as we can avoid (in some cases) the light / heavy
> httpd model ?

yes, exactly.





Re: do "file" -- does NOTHING

2000-04-25 Thread Doug MacEachern

this is either something 5.6.0 broke, or nobody has been using
Apache->httpd_conf, patch below fixes.
the MMN check isn't needed anymore anyhow, we've given up supporting older
versions of Apache long ago.

Index: Apache/Apache.pm
===
RCS file: /home/cvs/modperl/Apache/Apache.pm,v
retrieving revision 1.46
diff -u -r1.46 Apache.pm
--- Apache/Apache.pm2000/04/05 04:55:55 1.46
+++ Apache/Apache.pm2000/04/26 01:06:28
@@ -24,16 +24,14 @@
 __PACKAGE__->mod_perl::boot($VERSION);
 }
 
-if($ENV{MOD_PERL} && perl_hook("Sections")) {
+BEGIN {
 *Apache::ReadConfig:: = \%ApacheReadConfig::;
+}
 
-if(Apache::Constants::MODULE_MAGIC_NUMBER() >= 19971026) {
-   *Apache::httpd_conf = sub {
-   shift;
-   push @Apache::ReadConfig::PerlConfig,
-   map "$_\n", @_;
-   };
-}
+sub httpd_conf {
+shift;
+push @Apache::ReadConfig::PerlConfig,
+  map "$_\n", @_;
 }
 
 sub parse_args {




Re: [RFC] Transitioning from Apache::Registry to Apache handlers

2000-04-25 Thread Doug MacEachern

On 20 Apr 2000, Randal L. Schwartz wrote:

> > "Doug" == Doug MacEachern <[EMAIL PROTECTED]> writes:
> 
> Doug> why all the globals??  symbol table lookups are much slower than
> Doug> lexicals.
> 
> If I recall, the word lately is that they're much closer than they were.

i take it back, the symbol table lookups for globals are done at compile
time, 5.x has always done that, i think.  by the looks of:
 perl -MO=Terse -e 'my $lex = 1; our $ogv = 1; $gv = 1'

they still behave the same at runtime, though what happens during compile
time might be different.

> But lexicals are still "cleaner", if I recall.

indeed.




Re: Passing POST Data to a SubRequest

2000-04-25 Thread Doug MacEachern

On Thu, 20 Apr 2000, Chris D'Annunzio wrote:

> 
> > > Is there a way to pass data into a SubRequest using the post method?
> >
> > no, you'll need to use GET and $r->args
> >
> > which can be made transparent with the module below, provided your code
> > can deal with post POST and GET requests.
> 
> That works great if the Content-Type of the POST is
> application/x-www-form-urlencoded.  Is there a way to deal with other
> Content-Types like multipart/form-data?

for something like that, you'd be better off using the $r->pnotes table to
pass a CGI.pm or Apache::Request object to the subrequest.
Apache::RequestNotes on cpan might be useful to you.




Re: Modperl/Apache deficiencies... Memory usage.

2000-04-25 Thread Doug MacEachern

On Mon, 17 Apr 2000, Perrin Harkins wrote:
 
> What I know about Perl internals could fit on the head of a pin, but
> this strikes me as a very odd statement.  If the garbage collector is
> never used, why do my lexical variables go out of scope and get
> destroyed?  There are mod_perl packages like Apache::Session that
> absolutely depend on garbage collection of lexical variables to work. 
> Are you saying that destroying the variables and actually reclaiming the
> memory are separate, and only the first is happening?

excactly, lexicals "go out-of-scope", but most of the memory allocations
are not freed unless you explicitly undef.  e.g.:

sub foo {
my $string = shift;
print $string;
}

foo("hello world");

after the subroutine is called,  the SvPVX field of $string hangs onto the
allocated length("hello world") + 1, unless you undef $string;

this is an optimization, Perl assumes if you've allocated for a variable
once, you'll need to do it again, making the second assignment+ much
cheaper.  the elements of lexical arrays and hashes are released (well,
the refcnt is decremented, which triggers free if the refcnt was 1) when
one goes of-of-scope, but the size of the array/hash remains for the same 
reasons.  this is another reason it's always best to pass a reference when
possible, for $strings, @arrays and %hashes, to avoid these copies.

a the B::Size B::LexInfo packages on cpan were written to illustrate this,
though one or both needs fixing for 5.6.0, which i'll get to soon.




Re: $r->get_handlers bug/oversight?

2000-04-25 Thread Doug MacEachern

On Tue, 25 Apr 2000, Geoffrey Young wrote:

> Hi all...
>   
>   I've noticed that get_handlers() will return the enabled handlers
> for a PerlPostReadRequestHandler, but not when it is specified as a
> PerlInitHandler (either by calling
> $r->get_handlers('PerlPostReadRequestHandler') or
> $r->get_handlers('PerlInitHandler').  It is the same with
> PerlHeaderParserHandler.  An oversight?
> 
>   Also, I can't get anything for PerlCleanupHandlers, which kinda
> makes sense, since Cleanup isn't really a phase, per se (at least according
> to the book).  Does it make sense to add this to get_handlers() as well?

oversight.  neither CleanupHandler nor InitHandlers is in the
handler_table in Apache.xs.  probably because those directives were added
after get/set handlers was implemented, and the table was never updated.
i'll see about fixing that.





Re: 2.0 wishlist: consistent API and docs

2000-04-25 Thread Doug MacEachern

On Tue, 25 Apr 2000, Jeffrey W. Baker wrote:
 
> The origin of these inconsistencies has, I think, been the years-long
> development of both mod_perl and Apache 1.x.  Some headers may have their
> own accessors because they need to tweak something in the Apache core when
> they get set.

i'll take blame for the poor docs, certainly something that will be fixed
with 2.0.  as for the api, i think mod_perl is already consistent with
Apache's, with a few tweaks here and there to make things more Perlish.
if you think Apache's api is inconsistent, then let's fix it there, i
don't want to move too far away it in mod_perl.  while i agree it's kinda
awkward that certain headers have their own get/set functions, rather than
dropping/getting them raw into the headers_{in,out} tables, it's only done
where needed.  e.g. $r->set_content_length() not only adds the header to
r->headers_out, it updates another field in the request_rec (r->clength)

i don't want to add get/set method for all possible headers_{in,out}, that
would bloat things.  of course, you could implement an Apache::Headers
modules that does this, but i don't want to add too many methods that the
Apache api doesn't implement in the mod_perl "core".

Apache.xs is a kitchen sink, expect to see it broken out into smaller
modules (ala Apache::File, Apache::Log), that add methods into the
Apache:: namespace.

before any of the 2.0 code is written that glues into the request_rec and
friends, i plan to writeup a layout of the classes/methods and where
everything lives.  we can sort out any issues then before the api is
implemented.




Re: PerlHandler stopped working???

2000-04-25 Thread Doug MacEachern

> I do now - just uploaded a new version. It's still not correct though - a
> proper fix would have to pull SetHandler out of mod_mime altogether, I

you'd still have the same problem, Apache stops calling type handlers
after the first one returns OK.  besides, you can apply the SetHandler
config in your TypeHandler by using a subrequest, no need to pull it out
of mod_mime.
 
> I guess one important question is - why do we have to call SetHandler for
> PerlHandlers and not for any of the other handler phases. For all the
> other phases Apache/mod_perl automatically figures out if there's a
> handler installed and either runs perl code, or lets apache do its
> work. Why can't PerlHandler do the same? (as you can tell - I haven't dug
> into the internals of this - but I am curious).

because Apache dispatches response handlers based on the modules'
handler_rec (part of the module structure).  the key Apache uses to do
that lookup is r->handler, which if NULL, falls back to r->content_type.

> Right. So what's the point of PerlTypeHandler again?... ;-) Seriously
> though - Apache::MimeXML is the only PerlTypeHandler, as far as a quick
> search reveals, apart from your examples in the book. So maybe it would be
> worth investigating this further.

there's nothing to investigate, Apache is working as it is designed.
if you feel this is a design flaw, the the issue should be raise on
[EMAIL PROTECTED] list.
as i mentioned above,  alternative to the FixupHandler workaround, if your
TypeHandler wants to let mod_mime contribute, it can run a subrequest and
copy the $subr->{handler,content_type} as you see fit.

> A fixup handler is an interesting solution... but can I stack
> FixupHandlers? (I run most of my mod_perl code from a FixupHandler).

yes.
 
> Also, you didn't pick up on something I sent to the list in another
> thread... I have code that goes:
> 
> if ($r->current_callback eq 'PerlFixupHandler') {
>   $r->push_handlers('PerlHandler', \&code);
> }
> else {
>   &code($r);
> }
> 
> so that I can install the module as either a fixup or a PerlHandler. The
> fixup installed version is 4 times slower than calling the function
> directly - is that to be expected? (we're talking 20 requests/sec vs 80
> here - a huge difference).

i wouldn't expect that much of a difference.  i'll look into it.




Re: write a filefrom a navigator

2000-04-25 Thread Drew Taylor

benoit bordigoni wrote:
> 
> Hello,
> I'm a little perl developper, in a little french enterprise, (hexaflux).
> I make my period of training and I use an apache server 1.3x. I've got some
> problem with my server. It does not allow me to execute system commands in
> perl :
> "system (chmod 755 file.pl)" and
> "open (MYFILE, file.pl ". I
> f I execute my script  by executing the following command :
> /usr/bin/perl   /home/httpd/cgi-bin/script.pl,
> the file, "file.pl" is created and file.pl has the good permissions and it
> works! But if it is executed from the navigator it doesn't works!! I think
> that the permisions on the server are not good. 

Based on the snippet you posted, you would want to make sure that
/home/httpd/cgi-bin/script.pl is writable by whatever user the seb
server runs as (usually nobody). Be warned that you have to be careful
with world writable directories! Hope this helps. On a unix box you
would type the following (based on your example): chmod o+w
/home/httpd/cgi-bin

-- 
Drew Taylor
Vialogix Communications, Inc.
501 N. College Street
Charlotte, NC 28202
704 370 0550
http://www.vialogix.com/



Re: gensym()

2000-04-25 Thread John Siracusa

On 4/24/00 10:06 AM, Randal L. Schwartz wrote:
>> "Matt" == Matt Sergeant <[EMAIL PROTECTED]> writes:
>> 
>> So do I have to use gensym(), or not?
> 
> As long as you are aware of the package in which the symbol ends up, I
> can't see how it'd matter.  And nobody uses string indirect
> filehandles ($x = 'FH'; print $x 'hello') these days, we'd hope.

I ran into a gensym()-related snag while trying to be cute by doing:

my $fh = do { local *FH };

in a mod_perl content handler.  It worked fine 90% of the time,
but it eventually broke, causing $fh to be undefined.  This would
usually happen after an hour or so of use.  I didn't bother chasing
it down, though.  I just switched to gensym().  This was with perl
5.005_03 and mod_perl 1.2x, BTW.  In 5.6.x you can just do this, IIRC:

my $fh;

open($fh, ...)

which does The Right Thing as far as name clashes goes, does it not?

-John




Re: 2.0 wishlist: consistent API and docs

2000-04-25 Thread Jeffrey W. Baker

On Tue, 25 Apr 2000, Matt Sergeant wrote:

> On Tue, 25 Apr 2000, Jeffrey W. Baker wrote:
> 
> > I wish for a consistent API and documentation in the upcoming mod_perl 2.0
> > implementation.  For example, right now, we have several different ways to
> > tweak outgoing response headers.  Some headers have their own method
> > ($r->content_type), while others are aggregated ($r->header_out).  Some of
> > the ones that have their own accessor have slightly tweaked method names
> > ($r->set_content_length).  Worse, the documentation conflicts with the
> > implementation.  perldoc Apache says "You should not define any
> > 'Content-XXX' headers by calling [header_out], because these headers use
> > their own specific methods."  However, there is no method content_length,
> > you either have to set it using header_out, or use Apache::File and get
> > set_content_length.
> > 
> > The origin of these inconsistencies has, I think, been the years-long
> > development of both mod_perl and Apache 1.x.  Some headers may have their
> > own accessors because they need to tweak something in the Apache core when
> > they get set.  Regardless, I propose a more consistent API for mod_perl
> > 2.0.  When setting an outbound header, I would prefer to use all method
> > calls.  I would also be fine with using a generic method like
> > $r->header_out.  However, I think that accessor method interface is
> > preferrable because it lets us plug in funky logic that may be needed when
> > a header is set.  The header_out interface can have that too, but only if
> > it switches on the hash key, in which case it is just identical to but
> > slower than the accessor method interface.
> > 
> > That's my two cents.  Since I'm bitching about it, I volunteer to help be
> > the interface and documentation police for 2.0
> 
> I'm with you, as long as you can do:
> 
> PerlModule Apache::BackwardsCompatible

I agree.




Re: 2.0 wishlist: consistent API and docs

2000-04-25 Thread Matt Sergeant

On Tue, 25 Apr 2000, Jeffrey W. Baker wrote:

> I wish for a consistent API and documentation in the upcoming mod_perl 2.0
> implementation.  For example, right now, we have several different ways to
> tweak outgoing response headers.  Some headers have their own method
> ($r->content_type), while others are aggregated ($r->header_out).  Some of
> the ones that have their own accessor have slightly tweaked method names
> ($r->set_content_length).  Worse, the documentation conflicts with the
> implementation.  perldoc Apache says "You should not define any
> 'Content-XXX' headers by calling [header_out], because these headers use
> their own specific methods."  However, there is no method content_length,
> you either have to set it using header_out, or use Apache::File and get
> set_content_length.
> 
> The origin of these inconsistencies has, I think, been the years-long
> development of both mod_perl and Apache 1.x.  Some headers may have their
> own accessors because they need to tweak something in the Apache core when
> they get set.  Regardless, I propose a more consistent API for mod_perl
> 2.0.  When setting an outbound header, I would prefer to use all method
> calls.  I would also be fine with using a generic method like
> $r->header_out.  However, I think that accessor method interface is
> preferrable because it lets us plug in funky logic that may be needed when
> a header is set.  The header_out interface can have that too, but only if
> it switches on the hash key, in which case it is just identical to but
> slower than the accessor method interface.
> 
> That's my two cents.  Since I'm bitching about it, I volunteer to help be
> the interface and documentation police for 2.0

I'm with you, as long as you can do:

PerlModule Apache::BackwardsCompatible

-- 


Fastnet Software Ltd. High Performance Web Specialists
Providing mod_perl, XML, Sybase and Oracle solutions
Email for training and consultancy availability.
http://sergeant.org http://xml.sergeant.org




newbie help installation problems modperl/apache

2000-04-25 Thread jr


I am trying to use mod_perl with apache (1.22 & 1.3.12, respectively).  

I am having a multitude of problems, and cannot get hello world even working.

I have loaded down & installed a bunch of cpan modules to support this
(libwww-perl & prerequisites.  this solved some things).

as per the mod_perl INSTALL.apaci, I configure mod_perl for later apache
building. (Everything=1, apaci=1, etc), because of 

issue 1.  when configuring, I get a whole bunch of apxs warnings saying
that it cannot find /usr/sbin/httpd.   (this module is not here, this is
not where it will be).   it then warns me about mod_so, which I know I have
compiled in, because of other parms that I use with apache.  is this a
problem?
(i can make & make install).   how do I tell mod_perl where the httpd
module with be?   

issue 2.  If I build apache, I can start it, run it, do all the other
things I do with it.   If I shut it down, and go back to mod_perl's make
test, it blows chunks.  It fails with a syntax error on line 80 of
t/conf/httpd.conf.  Invalid command 'Alias'.  Does this tell me anything
about what is wrong?  The odd thing is that in my "normal" apache config, I
have about 80 name virtual servers, and I specifically load mod_alias &
similar modules.


issue 3.  apache is configured with
--activate-module=src/modules/perl/libperl.a  (as per the INSTALL.apaci).
However, there is no such file.   there are number of items in this
directory, includign libperl.module  the configuration, make, make install
steps do not have any errors however.

issue 4.  It doesnt work.  using the writing apache modules with perl & c
book, I tried to use a "PerlSetEnv" command. (p.28) configtest says this is
okay, but apache crashes upon starting.   If i try to define a location
(p.31), configtest gives me a syntax error on 'PerlHandler'.   Ultimately,
this tells me that something isnt right.  

jr
john riehl
ibucks, inc.




2.0 wishlist: consistent API and docs

2000-04-25 Thread Jeffrey W. Baker

I wish for a consistent API and documentation in the upcoming mod_perl 2.0
implementation.  For example, right now, we have several different ways to
tweak outgoing response headers.  Some headers have their own method
($r->content_type), while others are aggregated ($r->header_out).  Some of
the ones that have their own accessor have slightly tweaked method names
($r->set_content_length).  Worse, the documentation conflicts with the
implementation.  perldoc Apache says "You should not define any
'Content-XXX' headers by calling [header_out], because these headers use
their own specific methods."  However, there is no method content_length,
you either have to set it using header_out, or use Apache::File and get
set_content_length.

The origin of these inconsistencies has, I think, been the years-long
development of both mod_perl and Apache 1.x.  Some headers may have their
own accessors because they need to tweak something in the Apache core when
they get set.  Regardless, I propose a more consistent API for mod_perl
2.0.  When setting an outbound header, I would prefer to use all method
calls.  I would also be fine with using a generic method like
$r->header_out.  However, I think that accessor method interface is
preferrable because it lets us plug in funky logic that may be needed when
a header is set.  The header_out interface can have that too, but only if
it switches on the hash key, in which case it is just identical to but
slower than the accessor method interface.

That's my two cents.  Since I'm bitching about it, I volunteer to help be
the interface and documentation police for 2.0

-jwb




write a filefrom a navigator

2000-04-25 Thread benoit bordigoni

Hello,
I'm a little perl developper, in a little french enterprise, (hexaflux).
I make my period of training and I use an apache server 1.3x. I've got some
problem with my server. It does not allow me to execute system commands in
perl :
"system (chmod 755 file.pl)" and
"open (MYFILE, file.pl ". I
f I execute my script  by executing the following command :
/usr/bin/perl   /home/httpd/cgi-bin/script.pl,
the file, "file.pl" is created and file.pl has the good permissions and it
works! But if it is executed from the navigator it doesn't works!! I think
that the permisions on the server are not good. But I don't know where to
change the configuration of my server, access.conf, httpd.conf, srm.conf ?
Can you help me, thank you.
benoit
PS: sorry for my poor english speaking!



Re: PerlHandler stopped working???

2000-04-25 Thread Randal L. Schwartz

> "Matt" == Matt Sergeant <[EMAIL PROTECTED]> writes:

Matt> I guess one important question is - why do we have to call SetHandler for
Matt> PerlHandlers and not for any of the other handler phases. For all the
Matt> other phases Apache/mod_perl automatically figures out if there's a
Matt> handler installed and either runs perl code, or lets apache do its
Matt> work. Why can't PerlHandler do the same? (as you can tell - I haven't dug
Matt> into the internals of this - but I am curious).

I've been pondering this for quite some time, and was considering
a "magic mime type" that I'd deal with in the fixup handler... if
the MIME type assigned by mod_mime or anything else in the mime phase
is "text/html;PerlHandler=Apache::Registry", then the generic
fixup handler would patch that to "text/html" and push a PerlHandler
of Apache::Registry.

That way you could do this:


SetType text/html;PerlHandler=HTML::Mason



SetType text/plain;PerlHandler=Apache::Registry



SetType text/html


Syntax is probably off... but I think you can see where I'm going with
this.  Bring the MIME type to mean both the "real" mime type as well
as a PerlHandler if needed.  I'm sure it's a 15 line
FixupHandler... just haven't had time to tear down part of my site to
test. :)

-- 
Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095
<[EMAIL PROTECTED]> http://www.stonehenge.com/merlyn/>
Perl/Unix/security consulting, Technical writing, Comedy, etc. etc.
See PerlTraining.Stonehenge.com for onsite and open-enrollment Perl training!



Re: Deep recursion on subroutine "Apache::Constants::AUTOLOAD"

2000-04-25 Thread Elizabeth Mattijsen

At 12:59 4/25/00 -0600, Martin Lichtin wrote:
>Doug MacEachern wrote:
>> > Anyone understand why
>> > perl -we 'use Apache::Constants; Apache::Constants::OK();'
>> > causes this problem?
>> what version of mod_perl are you using? '
>mod_perl 1.21,  perl 5.00503

This reminds me of a problem that we had under mod_perl: I'm not sure it
exists in later versions, and if this has anything to do with your problem.
 Just in case it might help you, here is how this would go:

package MyPackage::SubModule;
sub new { my $self = {}; bless $self; $self }

package MyPackage;
sub new { my $self = {}; bless $self; $self }
sub SubModule { MyPackage::SubModule->new( @_ ) }
^  ^
For some reason with _some_ combinations of Perl and mod_perl, the
following code would recurse infinitely and cause the "Deep recursion"
error message:

$mypackage = new MyPackage;
$submodule = $mypackage->SubModule( @parameters );

However, if you would write SubModule like this:

sub SubModule { 'MyPackage::SubModule'->new( @_ ) }
^^
there was no problem.  This would indicate to me that there is some kind of
compile-time optimization in the version of Perl/mod_perl that incorrectly
assumes that "MyPackage::SubModule" is a subroutine reference, where in
fact it is a class reference.  By putting the class reference between
single quotes, the optimization is apparently by-passed and the problem
disappeared.


Hope this helps.


Elizabeth Mattijsen
Integra Netherlands



Re: PerlHandler stopped working???

2000-04-25 Thread Matt Sergeant

On Tue, 25 Apr 2000, Doug MacEachern wrote:

> > I guess the problem is that mod_mime implements SetHandler - and I'm not
> > convinced it should. If you were given the opportunity to do it all again
> 
> understood, but this is how apache is designed, mod_perl is just going
> with the flow here.
> 
> > I'd suggest it be done as follows:
> > 
> > If a PerlTypeHandler returns OK,  check if
> > @{$r->get_handlers('PerlHandler')} is true (i.e. there's a PerlHandler
> > waiting in the wings). If so, call $r->handler('perl-script').
> 
> so why not just do that in your PerlTypeHandler?

I do now - just uploaded a new version. It's still not correct though - a
proper fix would have to pull SetHandler out of mod_mime altogether, I
guess. For example, say your config contains:

# PerlTypeHandler blah
SetHandler perl-script
PerlFixupHandler foo

And in foo::handler() you call $r->push_handler('perl-script'). Suddenly
it stops working when you uncomment the PerlTypeHandler there.

I guess one important question is - why do we have to call SetHandler for
PerlHandlers and not for any of the other handler phases. For all the
other phases Apache/mod_perl automatically figures out if there's a
handler installed and either runs perl code, or lets apache do its
work. Why can't PerlHandler do the same? (as you can tell - I haven't dug
into the internals of this - but I am curious).

>  i don't think it's right
> for mod_perl to have that logic hardwired in.  the other solution, is to
> let mod_mime do it's thang in the type phase, and do your thang in the
> fixup phase to override anything mod_mime did that you don't want.

Right. So what's the point of PerlTypeHandler again?... ;-) Seriously
though - Apache::MimeXML is the only PerlTypeHandler, as far as a quick
search reveals, apart from your examples in the book. So maybe it would be
worth investigating this further.

A fixup handler is an interesting solution... but can I stack
FixupHandlers? (I run most of my mod_perl code from a FixupHandler).

Also, you didn't pick up on something I sent to the list in another
thread... I have code that goes:

if ($r->current_callback eq 'PerlFixupHandler') {
$r->push_handlers('PerlHandler', \&code);
}
else {
&code($r);
}

so that I can install the module as either a fixup or a PerlHandler. The
fixup installed version is 4 times slower than calling the function
directly - is that to be expected? (we're talking 20 requests/sec vs 80
here - a huge difference).

-- 


Fastnet Software Ltd. High Performance Web Specialists
Providing mod_perl, XML, Sybase and Oracle solutions
Email for training and consultancy availability.
http://sergeant.org http://xml.sergeant.org




Apache XML Delivery Toolkit

2000-04-25 Thread Matt Sergeant

I thought I'd just post here what I sent to the axdtk list, in case there
are people here who don't know what the heck I'm talking about... If this
perks your interest, send a mail to [EMAIL PROTECTED], download
the toolkit, and start asking questions...

What is the AXDTK?

It's a system very much like Cocoon (http://xml.apache.org/cocoon/), but
based on mod_perl. The idea is to allow a few things:

- Stylesheets and XML files get associated automatically using the w3c
semantics (http://www.w3.org/TR/xml-stylesheet).
- Pre and Post processing can be performed using mod_perl stacked
handlers.
- Output is cached automatically if the underlying system uses DOM,
otherwise the stylesheet processor developer has to implement caching
himself, however the hooks are provided for this.
- Stylesheets can cascade if based on DOM trees.

For those unfamiliar with Cocoon, here's what happens:

1. A request comes in for an XML file.

2. If someone has installed a stacked handler prior to
Apache::XMLStylesheet, that handler is called. One idea for such handlers
is to extract a media type by browser sniffing (e.g. sets the media to
"handheld"). Another idea is to take a preferred style from the
querystring such as "style=no%20images".

3. Apache::XMLStylesheet checks its cache for a matching set of combined
parameters (file, style, media). If the cache says that the XML file is
older than the cache, use the list of stylesheets in the cache. If the
cache is older than the file, parse the file for the xml-stylesheet
processing instructions.

4. Check all the stylesheets exist.

5. If all the stylesheets exist, check the difference in timestamps
between the xml file and all the stylesheet files, and the output cache
file. If any are newer than the output cache file, then we re-run all the
styles against the xml file. If they're all older we stop there, set the
filename to the cached file, and return DECLINED. Apache obliges and
returns the cached file to the browser for us.

6. If we re-create, we have mark off stylesheet type mappings against
modules or functions. That is, the type="..." attribute in the stylesheet
processing instruction gives us a pointer as to what module to use to
process that stylesheet (based on some info in your httpd.conf file). We
load that module and execute the function, passing in the stylesheet and
the xml filename as parameters.

7. Modules based on the DOM can use the mod_perl API to set the
$r->pnotes('dom_tree') value when they're done, rather than printing out
the results. This is how the caching works, and how cascading
works. Modules that aren't based on the DOM can't cascade... yet.

8. The resulting DOM tree is printed out both to the cache file and to the
browser. The DOM tree is disposed of.

That, in a nutshell, is it. Currently it's a work in progress. Today I
hope to finish the version that does all the caching work and cascading
stylesheets.

If anyone wants to volunteer to help, here's what I consider needs done:

- A cool web page ;-)
- Get Xalan/Xerces working on Unix. This is pretty vital to the success,
IMHO. See http://xml.apache.org/
- Write modules that plugin to this architecture that perform the
following functionality:

   - SQL plugin using DBI. Should take an XML file (or DOM tree), parse
out connection information and run the SQL. Produce another DOM tree and
put that DOM tree in $r->pnotes('dom_tree')
   - Implement other stylesheet processors, like XPathScript and NotXSLT
   - Get the word out! Perl must not be behind in the XML world for much
longer!


Download AXDTK at http://xml.sergeant.org/download/

It's not well organised right now. The key component is
Apache::XMLStylesheet. To use that you need XML::Parser and
Apache::MimeXML(0.05). The only plugins available are Apache::XPathScript
and Apache::XPath::NotXSLT, and an XSLT plugin that's in the list
archive.

-- 


Fastnet Software Ltd. High Performance Web Specialists
Providing mod_perl, XML, Sybase and Oracle solutions
Email for training and consultancy availability.
http://sergeant.org http://xml.sergeant.org




Re: segfault in DSO mod_perl 1.23 (perl 5.6.0) with apache-1.3.12

2000-04-25 Thread Doug MacEachern

> perl Makefile.PL USE_APXS=1 WITH_APXS=/usr/local/sbin/apxs EVERYTHING=1

probably a long shot, but any difference if you build with USE_DSO=1
instead of USE_APXS ?




Re: PerlHandler stopped working???

2000-04-25 Thread Doug MacEachern

> I guess the problem is that mod_mime implements SetHandler - and I'm not
> convinced it should. If you were given the opportunity to do it all again

understood, but this is how apache is designed, mod_perl is just going
with the flow here.

> I'd suggest it be done as follows:
> 
> If a PerlTypeHandler returns OK,  check if
> @{$r->get_handlers('PerlHandler')} is true (i.e. there's a PerlHandler
> waiting in the wings). If so, call $r->handler('perl-script').

so why not just do that in your PerlTypeHandler?  i don't think it's right
for mod_perl to have that logic hardwired in.  the other solution, is to
let mod_mime do it's thang in the type phase, and do your thang in the
fixup phase to override anything mod_mime did that you don't want.




RE: [RFC] XML/Apache Templating with mod_perl

2000-04-25 Thread Gerald Richter

>
> Yeah that will be really cool... can you inform me about the progress on
> this, if you made something ... I thought about something similar
> not exact but
> some sort of processor to handle XML(XSLT) -> HTML conversations +
> some sort of caching tehnique, but I also like this
> approachsomething like
> this will help easy integrate XML stuff in the current scheme of producing
> final HTML
>
Embperl 2.0 will be able to do such things, but it's a long way to go and
will take some time until I have implemented this...

Gerald



-
Gerald Richterecos electronic communication services gmbh
Internetconnect * Webserver/-design/-datenbanken * Consulting

Post:   Tulpenstrasse 5 D-55276 Dienheim b. Mainz
E-Mail: [EMAIL PROTECTED] Voice:+49 6133 925151
WWW:http://www.ecos.de  Fax:  +49 6133 925152
-




Re: vanilla install failure 1.3.12/1.22/5.6.0

2000-04-25 Thread Doug MacEachern

On Tue, 25 Apr 2000, Doug MacEachern wrote:

> On Sun, 23 Apr 2000 [EMAIL PROTECTED] wrote:
>  
> > Program received signal SIGSEGV, Segmentation fault.
> > 0x806412e in perl_handler (r=0x8727d9c) at mod_perl.c:844
> > 844 dPPREQ;
> 
> seems the common element in both of these reports is ssl.  i'll build a
> mod_perl+mod_ssl mix, so long as i can reproduce the problem, i'll have a
> patch soon..

'make test' passes 100% for me with:
Apache/1.3.12 mod_perl/1.23_01-dev Perl/v5.6.0 mod_ssl/2.6.3 OpenSSL/0.9.5 
suse 6.1

r->per_dir_config should never be NULL, i'm stumped without being able to
reproduce this.





Re: segfault in DSO mod_perl 1.23 (perl 5.6.0) with apache-1.3.12

2000-04-25 Thread Michael Poole

Doug MacEachern <[EMAIL PROTECTED]> writes:

> On 22 Apr 2000, Michael Poole wrote:
> 
> > I get a segfault on the first page access to Apache (it's just a
> > request for / on the server).  Backtrace:
> ... 
> > That line of mod_perl.c is "dPPDIR;"
> > However, r->per_dir_config is NULL, so the get_module_config() call there
> > ends up dereferencing a NULL pointer to generate the SEGV.
> 
> that's stange.  what options did you give mod_perl's Makefile.PL?
> did mod_perl's 'make test' pass?
> what request is the server handling when this happens?

perl Makefile.PL USE_APXS=1 WITH_APXS=/usr/local/sbin/apxs EVERYTHING=1

'make test' refused to run since it was using APXS

The server was handling "GET / HTTP/1.0" at the time (the first request
made to the server).

My "solution" to this point (suggested by Dave Mee) is to just use
APACI to link mod_perl statically into Apache.  It's worked perfectly
so far, although it is a bit kludgy.

Michael



RE: Unknown Error Message

2000-04-25 Thread Doug MacEachern

On Mon, 24 Apr 2000, Ian Mahuron wrote:

> 
> I get something similar when I wrap my call to Apache::Session::DBI in an
> eval to try to catch it die()ing (ie. session id not found).  IIRC, this is
> a known bug in perl.

right, which is fixed in 5.6.0
 
> 
> >> panic: POPSTACK
> >> Callback called exit.
> 
> 




Re: gensym()

2000-04-25 Thread Doug MacEachern

On Mon, 24 Apr 2000, Matt Sergeant wrote:

> Is it necessary to use gensym() in a PerlHandler() - it doesn't seem
> necessary to me. The book says "Ordinary bareword filehandles are prone to
> namespace clashes". Is that the case for a perl module? I don't think
> so. 

no, you don't have to use gensym().  we tried to promote the use of
lexicals rather than globals in the book, but the choice is yours.

with 5.6.0, 'open my $fh, ...' is the best solution.




Re: PerlHandler stopped working???

2000-04-25 Thread Matt Sergeant

On Tue, 25 Apr 2000, Doug MacEachern wrote:

> On Sat, 22 Apr 2000, Matt Sergeant wrote:
> 
> > On Sat, 22 Apr 2000, Matt Sergeant wrote:
> > 
> > > The only thing I can think of, is that Apache::MimeXML is somehow stopping
> > > the PerlHandler phase from being executed. Can it do that (but still allow
> > > the PerlFixupHandler phase to execute)???
> > 
> > OK, it was Apache::MimeXML... Which is very odd indeed. A bug in mod_perl
> > by the looks of things. All I'm returning from Apache::MimeXML, btw, is
> > OK or DECLINED. It was returning OK when PerlHandler stopped working. For
> > now I'll disable it, and set Mime types manually for .xml files - but
> > something is seriously not right there.
> 
> as i already explained to matt in another email, if a TypeHandler returns
> OK, then mod_mime's type handler is not called.  which means that
> SetHandler, AddType, etc., for that require will be ignored, unless you
> return DECLINED or implement them yourself (see Apache::MIME in ch8 of
> the eagle book)

OK, I'm looking at that now, and I realise you're just passing it straight
through to apache to do the right thing, but I think it's the wrong
thing... Hear me out.

Apache::MimeXML, like most non-PerlHandler handlers, is not designed as a
replacement for mod_mime, but to build on it. If I detect something as
XML, I'd like to say "OK, I'm done with this phase, let the next
continue". Likewise if I don't want to handle this phase (i.e. I want
mod_mime to do its thang) I return DECLINED. I don't want a MIME handler
that's supposed to add to mod_mime to change the fact that I have a
PerlHandler setup. In order to build Apache::MimeXML properly, I'd have to
build an entire replacement for mod_mime, in XS, parsing the configuration
for SetHandler, and I don't want to do that.

I guess the problem is that mod_mime implements SetHandler - and I'm not
convinced it should. If you were given the opportunity to do it all again
I'd suggest it be done as follows:

If a PerlTypeHandler returns OK,  check if
@{$r->get_handlers('PerlHandler')} is true (i.e. there's a PerlHandler
waiting in the wings). If so, call $r->handler('perl-script').

If a PerlTypeHandler returns DECLINED, do it as you do now.

That should be backwards compatible with most code, I think. And not
interfere with things already setup in peoples httpd.conf/htaccess
files. Alternatively have the OK case remain the same, and have a new
return value (DONE?) that signfies to do the SetHandler part of mod_mime.

Convince me I'm thinking wrong, then I can get back to some real work ;-)

-- 


Fastnet Software Ltd. High Performance Web Specialists
Providing mod_perl, XML, Sybase and Oracle solutions
Email for training and consultancy availability.
http://sergeant.org http://xml.sergeant.org




Re: vanilla install failure 1.3.12/1.22/5.6.0

2000-04-25 Thread Doug MacEachern

On Sun, 23 Apr 2000 [EMAIL PROTECTED] wrote:
 
> Program received signal SIGSEGV, Segmentation fault.
> 0x806412e in perl_handler (r=0x8727d9c) at mod_perl.c:844
> 844   dPPREQ;

seems the common element in both of these reports is ssl.  i'll build a
mod_perl+mod_ssl mix, so long as i can reproduce the problem, i'll have a
patch soon..




Re: Deep recursion on subroutine "Apache::Constants::AUTOLOAD"

2000-04-25 Thread Martin Lichtin

Doug MacEachern wrote:
> > Anyone understand why
> > perl -we 'use Apache::Constants; Apache::Constants::OK();'
> > causes this problem?
> 
> what version of mod_perl are you using? '

mod_perl 1.21,  perl 5.00503



Re: End failed -- Cleanup aborted and other errors

2000-04-25 Thread Doug MacEachern

On Sat, 22 Apr 2000, Gagan Prakash wrote:

> Hi,
> 
> We are in the process of moving our site www.adalbadal.com from the web
> hosting company in India to iserver -- they do have mod_perl!!!
> 
> Well during this process, some of our scripts are giving us:
> END failed--cleanup aborted at /dev/null line 6.
> Callback called exit at /dev/null line 6.
> and an occassional
> Out of memory!
> 
> This server has Apache 1.3.11
> Mod_perl 1.21

might want to try 1.23.  do this script have END blocks?  if so, what are
they doing?




Re: httpd could not be started

2000-04-25 Thread Doug MacEachern

On Sat, 22 Apr 2000 [EMAIL PROTECTED] wrote:

> It's a much simpler problem than I let on to before...
> (thanks matt@telepath)

whoops, disregard my last message then.
 
> The error log shows what went wrong, but I am at a bit of
> a loss on how to correct it.
> 
> [info] mod_unique_id: using ip addr my.valid.ip.address
> getpeername: Socket operation on non-socket
> getsockname: Socket operation on non-socket
> Error getting local address
> 
> hostname returns the correct answer.
> I put "my.ip.x.x localhost" into /etc/hosts
> inetd is running, but all /etc/inetd.conf programs are
> commented out.
> I'm getting my IP from DHCP, but it is constant until midnight.

you should use the loopback address for localhost:

127.0.0.1   localhost 




Re: httpd could not be started

2000-04-25 Thread Doug MacEachern

On Sat, 22 Apr 2000 [EMAIL PROTECTED] wrote:

> I am trying to build httpd using DSO and mod_perl, mod_ssl
> and mod_php (but that one hasn't come up yet)
> 
> I'm on an unpatched RedHat 6.1 with a newly built 5.6.0 perl
> (egcs 2.91.66) with mod_perl from CVS and mod_ssl-2.6.3-1.3.12
> for apache_1.3.12

what version of mod_perl are you using?
did 'make test' pass?

the server might be core dumping, if you could follow the hints in the
SUPPORT doc for getting a stacktrace, we should be able to figure out why.





Re: segfault in DSO mod_perl 1.23 (perl 5.6.0) with apache-1.3.12

2000-04-25 Thread Doug MacEachern

On 22 Apr 2000, Michael Poole wrote:

> I get a segfault on the first page access to Apache (it's just a
> request for / on the server).  Backtrace:
... 
> That line of mod_perl.c is "dPPDIR;"
> However, r->per_dir_config is NULL, so the get_module_config() call there
> ends up dereferencing a NULL pointer to generate the SEGV.

that's stange.  what options did you give mod_perl's Makefile.PL?
did mod_perl's 'make test' pass?
what request is the server handling when this happens?





Re: PerlHandler stopped working???

2000-04-25 Thread Doug MacEachern

On Sat, 22 Apr 2000, Matt Sergeant wrote:

> On Sat, 22 Apr 2000, Matt Sergeant wrote:
> 
> > The only thing I can think of, is that Apache::MimeXML is somehow stopping
> > the PerlHandler phase from being executed. Can it do that (but still allow
> > the PerlFixupHandler phase to execute)???
> 
> OK, it was Apache::MimeXML... Which is very odd indeed. A bug in mod_perl
> by the looks of things. All I'm returning from Apache::MimeXML, btw, is
> OK or DECLINED. It was returning OK when PerlHandler stopped working. For
> now I'll disable it, and set Mime types manually for .xml files - but
> something is seriously not right there.

as i already explained to matt in another email, if a TypeHandler returns
OK, then mod_mime's type handler is not called.  which means that
SetHandler, AddType, etc., for that require will be ignored, unless you
return DECLINED or implement them yourself (see Apache::MIME in ch8 of
the eagle book)




Re: ANNOUNCE: Apache-TicketAccess 0.10

2000-04-25 Thread Doug MacEachern

On Sat, 22 Apr 2000, Michael Schout wrote:
 
> Does this entry in the apache-modlist exist anywhere?  I looked for it on CPAN,
> but I cant even find MPB's directory on CPAN.  If the module is no longer in
> existance, then maybe my module can replace it?

www.modperl.com (which is down at the moment) and it still exists in the
book of course :)  the examples tarball should probably be on cpan too.
 
> I dont know what else I would name it.  It is extremely similar to the
> TicketAccess system in the eagle book, with a lot of extra features added in.

please come up with a different name, it's way too confusing for two
different modules to have the same name.




$r->get_handlers bug/oversight?

2000-04-25 Thread Geoffrey Young

Hi all...

I've noticed that get_handlers() will return the enabled handlers
for a PerlPostReadRequestHandler, but not when it is specified as a
PerlInitHandler (either by calling
$r->get_handlers('PerlPostReadRequestHandler') or
$r->get_handlers('PerlInitHandler').  It is the same with
PerlHeaderParserHandler.  An oversight?

Also, I can't get anything for PerlCleanupHandlers, which kinda
makes sense, since Cleanup isn't really a phase, per se (at least according
to the book).  Does it make sense to add this to get_handlers() as well?


hope everone is well...

--Geoff



Re: Deep recursion on subroutine "Apache::Constants::AUTOLOAD"

2000-04-25 Thread Doug MacEachern

On Fri, 21 Apr 2000, Martin Lichtin wrote:

> Anyone understand why
> 
> perl -we 'use Apache::Constants; Apache::Constants::OK();'
> 
> causes this problem?

what version of mod_perl are you using?  from the command line you should
get this error:

% perl -we 'use Apache::Constants; Apache::Constants::OK();'
Undefined subroutine &Apache::Constants::OK called at -e line 1.

you can't use Apache::Constants outside of httpd.




Re: Apache::DBI disconnect?

2000-04-25 Thread Tom Mornini

On Mon, 24 Apr 2000, John S. Evans wrote:

> Weird.  The whole point of Apache::DBI (or so I understand it) is so that
> your $dbh stays valid across CGI or Handler calls.

Sure. But it does it magically. You're still supposed to call disconnect.
That way, your code will also work without Apache::DBI.

-- 
-- Tom Mornini
-- InfoMania Printing and Prepress




Re: mod_proxy problem

2000-04-25 Thread Kees Vonk 7249 24549

> | 
> |DocumentRoot "/app/env_control/httpd/DocumentRoot"
> |
> |   # disable mason for this location
> |   SetHandler default-handler
> |
> |ProxyPass/Test/ http://myhost:8084/Test/
> |ProxyPassReverse /Test/ http://myhost:8084/Test/
> | >
> |
> | When I try to access location /Test/, I get the following
> | error:
> |
> | [Tue Apr 25 08:59:34 2000] [error] [client ] File
> | does not exist:
> | proxy:http://myhost:8084/Test/CheckDeployment/GetUKLs
> |
> | Can anybody give me some insight as to what I am doing wrong?
> | I am new to mod_proxy and I don't even know where to start
> | looking.
>
> Show us your  (the destination in this 
> proxy config), a "ls -l" of
> /app/env_control/httpd/DocumentRoot/Test/CheckDeployment and a "host
> myhost".
> 
> Ime
I am running on HP-UX 10.20, there does not seem to be 'host' 
command.

myhost:8084 is my development server (runs on the same box), 
here is a copy of the httpd.conf (myhost:8082 is SSL enabled, 
8084 is not, I don't know if that makes a difference). Also 
attached the requested ls -l.



ServerType standalone


ServerRoot "/opt/perl5/apache"

PidFile /var/iefadmn/apache/8084/logs/httpd.pid
ScoreBoardFile /var/iefadmn/apache/8084/logs/httpd.scoreboard

Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15

MinSpareServers 3
MaxSpareServers 5

StartServers 3

MaxClients 8

MaxRequestsPerChild 10

ClearModuleList
AddModule mod_env.c
AddModule mod_log_config.c
AddModule mod_mime.c
AddModule mod_alias.c
AddModule mod_access.c
AddModule mod_auth.c
AddModule mod_so.c
AddModule mod_setenvif.c
AddModule mod_perl.c


Port 8084

User  intranet
Group users

ServerName myhost



AllowOverride None

PerlInitHandler Apache::StatINC

Order allow,deny
Deny from all



PerlSetVar ServerAlias myhost
PerlAccessHandler Intranet::Alias


UseCanonicalName On

HostnameLookups Off

ServerSignature On

TypesConfig /opt/perl5/apache/conf/8084/mime.types

LogFormat "%h %l %u %t \"%r\" %>s %b" common

ErrorLog /var/iefadmn/apache/8084/logs/error_log
LogLevel warn

CustomLog /var/iefadmn/apache/8084/logs/access_log common

SetEnv RC_FILE /app/env_control/repdata/iefit.rc

PassEnv ORACLE_HOME
PerlPassEnv ORACLE_HOME

PerlRequire /opt/perl5/apache/conf/8084/startup.pl

DocumentRoot "/app/env_control/httpd/DocumentRoot"


   Options FollowSymLinks
   AllowOverride None

   Order allow,deny
   Allow from all

   AuthType Basic
   AuthName "Environment Support and Projects (testing)"

   PerlAuthenHandler RCM::Authenticate
   PerlAuthzHandler  RCM::Authorise

   AuthAuthoritative on

   require role TEST01 TSTAU1


Alias /icons/   "/var/iefadmn/apache/icons/"
Alias /images/  "/var/iefadmn/apache/images/"


Order allow,deny
Allow from all


Order allow,deny
Allow from all


PerlRequire /opt/perl5/apache/conf/8084/handler.pl
DefaultType text/html

   SetHandler perl-script
   PerlHandler HTML::Mason



   SetHandler perl-script
   PerlHandler Intranet::mod_ssl_error


Alias /Images /app/env_control/httpd/Components/Images


   Order allow,deny
   Allow from all

   SetHandler perl-script
   PerlHandler HTML::Mason


AddEncoding x-compress Z
AddEncoding x-gzip gz

BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 
force-response-1.0
BrowserMatch "RealPlayer 4\.0" force-response-1.0
BrowserMatch "Java/1\.0" force-response-1.0
BrowserMatch "JDK/1\.0" force-response-1.0

Alias /Errors /app/env_control/httpd/Errors


   Order allow,deny
   Allow from all

   SetHandler perl-script
   PerlHandler HTML::Mason


ErrorDocument 403 /Errors/NotAuthorised
ErrorDocument 404 /Errors/NotFound


---


ls -l /app/env_control/httpd/DocumentRoot/Test/CheckDeployment
total 8
-rw-r--r--   1 iefit  dba   3176 Apr 12 13:28 GetUKLs




Re: -DPERL_NO_GET_CONTEXT horks everything

2000-04-25 Thread Jeffrey W. Baker

On Tue, 25 Apr 2000, Doug MacEachern wrote:
> "cvs up early, cvs up often"

word




Re: -DPERL_NO_GET_CONTEXT horks everything

2000-04-25 Thread Doug MacEachern

i hate to see you suffer this pain, when the proper fix was posted to p5p
on friday (see patches/no_get_context.pat) and modperl-2.0/00README_FIRST
no longer suggests building Perl with -DPERL_NO_GET_CONTEXT
"cvs up early, cvs up often"




Re: [RFC] XML/Apache Templating with mod_perl

2000-04-25 Thread Matt Sergeant

On Tue, 25 Apr 2000, Leslie Mikesell wrote:

> According to Matt Sergeant:
> 
> > In case you missed it - I just announce the Apache XML Delivery Toolkit to
> > both the modperl list and the Perl-XML list. With it you can develop an
> > XSLT Apache module in 13 lines of code (no caching, but it works).
> 
> I saw it, but perhaps misinterpreted the 'not' in the xslt package.
> Is this intended to be fairly compatible with IIS's 'TransformNode'
> handling of xml/xsl (i.e. can I use the same xsl files)?

No. It's definitely Not XSLT compatible. Sorry if it wasn't clear.

-- 


Fastnet Software Ltd. High Performance Web Specialists
Providing mod_perl, XML, Sybase and Oracle solutions
Email for training and consultancy availability.
http://sergeant.org http://xml.sergeant.org




Re: [RFC] XML/Apache Templating with mod_perl

2000-04-25 Thread Leslie Mikesell

According to Matt Sergeant:

> In case you missed it - I just announce the Apache XML Delivery Toolkit to
> both the modperl list and the Perl-XML list. With it you can develop an
> XSLT Apache module in 13 lines of code (no caching, but it works).

I saw it, but perhaps misinterpreted the 'not' in the xslt package.
Is this intended to be fairly compatible with IIS's 'TransformNode'
handling of xml/xsl (i.e. can I use the same xsl files)?

  Les Mikesell
   [EMAIL PROTECTED]



-DPERL_NO_GET_CONTEXT horks everything

2000-04-25 Thread Jeffrey W. Baker

Building Perl 5.6 with -DPERL_NO_GET_CONTEXT breaks just about every
program that uses the Perl C API.  DBI, Storable mod_include, and mod_perl
1.23 are all unable to compile with this build flag.  Bummer.

I skimmed perldelta and perlguts to see what was what.  It was pretty easy
to fix Storable by adding dTHX wherever the compiler complained about
my_perl being undefined.  But the way I read perlguts, couldn't we build
perl without -DPERL_NO_GET_CONTEXT and just #define it in the mod_perl 2.0
sources?  That way, we could have an efficient mod_perl, but not have to
hack on every module in CPAN.

I think.

-jwb




Re: [OT] Lotus Domino as Web server ?

2000-04-25 Thread Francesc Guasch

Jean-Denis Girard wrote:
> 
> Hi dear modperlers,
> 
> We have a client here willing to use Domino to serve
> his Web site.
> 

I started considering Domino a while ago. My conclusion
was to flee from it.

I haven't used it and these were the opinions of real
programmers that used it. I'll try to recall things
they told me ;

- It uses a lot of CPU and RAM, if you think mod_perl
  eats RAM, you've never used domino. I've seen this
  happening in intranet with around 1000 users. They
  had to install alphas with NT.

- It does not farming. If you install domino you'll end
  up having a lot of domains, one for every section of
  your web, each one in a server. Your users will go
  crazy searching dead links and asking you what server
  holds now the pages they were using.

  Because you'll start moving  databases to a new server
  as soon as the older started die of resources.

- Amazing lack of features, the API to the web server maybe
  exists but no developer I talked to knew nothing about
  sending headers, internal redirects and so. I was
  comparing to mod_perl, and HTML::Mason, the dhandler
  and autohander stuff was very important for me and
  I wanted something like this. I didn't find it.

- It does not SQL, building an application for the web
  with domino takes a big effort of analising, programming
  and maintaining. A thing that would be very easy with
  a SQL database can be very hard or impossible to do
  with domino. I was told is hard to feed such a database
  from 3rd party data. And if you must add  more data
  again to domino is harder again.

- It's impossible to separate content from formatting.

- You don't embed a language in HTML, you ask domino
  about inserting html inside your code.

My conclusion was it's no good for web programming.

I went to a super human software lotus show and it was
very disapointing, a lot of vapourware. I thought it
must be very bad when they admitted nested tables didn't
work at all in domino 4.x, and started working at 5.0.

In addition I must say mod_perl has a lot of features
never dreamed by people that use Domino or IIS+ASP.
I have asked to other programmers friends of mine
who use these platforms, no one uses mod_perl and they
think their tools are far better than mine and easier
to use. I quit advocacing mod_perl. For every feature
they lack, they have work arounds or don't use it.

-- 
 - frankie -



Deep Recursion with File::Copy

2000-04-25 Thread Jeremy Blumenfeld

Hi.
We are running Server Version: Apache/1.3.9 (Unix) mod_perl/1.21 on a
Linux system.
Having problems with a "Deep Recursion" when using the copy method of
File::Copy.

Basically, this part of the copy code isn't working properly.  
#   if (defined &syscopy && \&syscopy != \©
#   && !$to_a_handle
#   && !($from_a_handle && $^O eq 'os2' )   # OS/2 cannot handle
handles
#   && !($from_a_handle && $^O eq 'mpeix')  # and neither can
MPE/iX.
#  )
#   {
#   return syscopy($from, $to);
#   }

The if should fail, as \&syscopy should equal \©, but under modPerl
it doesn't work.
Why are they different under apache/Modperl?  Is this because of the
way that Apache::Registry wraps the scripts in subroutines?

Anyways, is there an appropriate patch for this?  We are just commenting
this part out of the File::Copy module for now.

thanks for any help



AXDTK Mailing List open!

2000-04-25 Thread Matt Sergeant

I had a pretty good response to the offer of a mailing list for the Apache
XML Delivery Toolkit - and very fast too!

So before more people say yes go ahead... send a blank mail to
mailto:[EMAIL PROTECTED] and join the list!

-- 


Fastnet Software Ltd. High Performance Web Specialists
Providing mod_perl, XML, Sybase and Oracle solutions
Email for training and consultancy availability.
http://sergeant.org http://xml.sergeant.org




Mailing list for AXDTK

2000-04-25 Thread Matt Sergeant

I'm thinking of starting a separate mailing list for the Apache XML
Delivery Toolkit. 

For those who don't know, the Apache XML Delivery Toolkit now offers the
core functionality of Cocoon (http://xml.apache.org/cocoon/) in
mod_perl, without the proprietary extension that cocoon has implemented
(because everything they've done can be achieved without any 
processing instructions).

In the near future I hope to add the following:
- XSLT parsing using Xalan (once it's ported to Linux and stable)
- SQL Pre-processing
- Embedded Perl (already available to some extent)

If there's interest in this mail me direct and I'll set something up.

-- 


Fastnet Software Ltd. High Performance Web Specialists
Providing mod_perl, XML, Sybase and Oracle solutions
Email for training and consultancy availability.
http://sergeant.org http://xml.sergeant.org




Re: [RFC] XML/Apache Templating with mod_perl

2000-04-25 Thread Matt Sergeant

On Tue, 25 Apr 2000, raptor wrote:

> Yeah that will be really cool... can you inform me about the progress on
> this, if you made something ... I thought about something similar not exact but
> some sort of processor to handle XML(XSLT) -> HTML conversations +
> some sort of caching tehnique, but I also like this approachsomething like
> this will help easy integrate XML stuff in the current scheme of producing
> final HTML

In case you missed it - I just announce the Apache XML Delivery Toolkit to
both the modperl list and the Perl-XML list. With it you can develop an
XSLT Apache module in 13 lines of code (no caching, but it works).

-- 


Fastnet Software Ltd. High Performance Web Specialists
Providing mod_perl, XML, Sybase and Oracle solutions
Email for training and consultancy availability.
http://sergeant.org http://xml.sergeant.org




Re: [RFC] XML/Apache Templating with mod_perl

2000-04-25 Thread raptor

Yeah that will be really cool... can you inform me about the progress on
this, if you made something ... I thought about something similar not exact but
some sort of processor to handle XML(XSLT) -> HTML conversations +
some sort of caching tehnique, but I also like this approachsomething like
this will help easy integrate XML stuff in the current scheme of producing
final HTML

see ya
=
iVAN
[EMAIL PROTECTED]
=



Re: mod_proxy problem

2000-04-25 Thread Ime Smits

| 
|DocumentRoot "/app/env_control/httpd/DocumentRoot"
|
|   # disable mason for this location
|   SetHandler default-handler
|
|ProxyPass/Test/ http://myhost:8084/Test/
|ProxyPassReverse /Test/ http://myhost:8084/Test/
| 
|
| When I try to access location /Test/, I get the following
| error:
|
| [Tue Apr 25 08:59:34 2000] [error] [client ] File
| does not exist:
| proxy:http://myhost:8084/Test/CheckDeployment/GetUKLs
|
| Can anybody give me some insight as to what I am doing wrong?
| I am new to mod_proxy and I don't even know where to start
| looking.

Show us your  (the destination in this proxy
config), a "ls -l" of
/app/env_control/httpd/DocumentRoot/Test/CheckDeployment and a "host
myhost".

Ime





mod_proxy problem

2000-04-25 Thread Kees Vonk 7249 24549

I have the following directives in my httpd.conf:

...


   DocumentRoot "/app/env_control/httpd/DocumentRoot"

   
  # disable mason for this location
  SetHandler default-handler
   
   ProxyPass/Test/ http://myhost:8084/Test/
   ProxyPassReverse /Test/ http://myhost:8084/Test/

...




When I try to access location /Test/, I get the following 
error:

[Tue Apr 25 08:59:34 2000] [error] [client ] File 
does not exist: 
proxy:http://myhost:8084/Test/CheckDeployment/GetUKLs



Can anybody give me some insight as to what I am doing wrong? 
I am new to mod_proxy and I don't even know where to start 
looking.


Kees Vonk



RE: ANNOUNCE: Apache::AuthCookie 2.007

2000-04-25 Thread Gerald Richter

Hi Ken,

the patch I send you for overwriting the login_form seems not to be in
2.007.

Are there any reason for this or did you just forget it?

Gerald

-
Gerald Richterecos electronic communication services gmbh
Internetconnect * Webserver/-design/-datenbanken * Consulting

Post:   Tulpenstrasse 5 D-55276 Dienheim b. Mainz
E-Mail: [EMAIL PROTECTED] Voice:+49 6133 925151
WWW:http://www.ecos.de  Fax:  +49 6133 925152
-




Re: Apache::DBI disconnect?

2000-04-25 Thread Perrin Harkins

"John S. Evans" wrote:
> 
> Weird.  The whole point of Apache::DBI (or so I understand it) is so that
> your $dbh stays valid across CGI or Handler calls.

That's right.  The disconnect call is a no-op when using Apache::DBI.

> I can only think of two reasons why I get the error message:
> 
> 1) My child process is dying, and the DBI code is telling me that I never
> called disconnect() on that $dbh.  I don't think this is the case, since the
> line (#119) in Apache::DBI that is referenced in the error is in the
> connect() call.
> 
> 2) My $dbh has timed out, and Apache::DBI is attempting to reconnect.  The
> code author decided not to perform a disconnect() because they knew the
> connection was already timed out.

Those are both good guesses.  I'd say the latter as well.  One of your
db handles probably failed to ping and got removed.  I wouldn't worry
about it.

- Perrin