You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl@perl.apache.org by "French, Shawn" <S....@AcceLight.com> on 2002/07/25 15:30:12 UTC

Problem: Apache2 / Perl 5.8.0 / mod_perl 2.0 / PHP all on Win32

I am in a bit of a jam. I think the "cross-post" is necessary since I need
the help of Apache, mod_perl, and PHP developers/users. I apologize for the
length, if you have time, my explanation (at the end) should clarify what I
mean.

Summary
-------
I need:
- A perl-enabled web server to run on the win32 platform
- mod_perl to allow for persistent (stay connected on the server side)
Net::Telnet objects  (CGI is unacceptable since a new process is spawned at
each request leaving no room for persistent objects)
- Multiple perl interpreters of Apache2 / mod_perl 2.0 to serve more than
one mod_perl request at a time
- Access to the client's Net::Telnet object during all of his/her requests
throughout his/her session
	- I might need Perl 5.8.0 for threads::shared to solve the above
problem
- A way for mod_perl scripts to communicate with PHP scripts quickly and
efficiently

Does anybody know what kind of configuration I could use to support all of
my needs above? 
Does anybody know another way for mod_perl 2.0 and PHP to communicate other
than apache_notes (if it's true I can't use apache_notes with Apache2 / PHP
4.2.X)?
If a solution is not available now (ie. I can't share Net::Telnet objects in
different requests, or, PHP isn't fully supporting Apache2), when will it be
available (if ever)?

Thanks for your time and any help,
Shawn


Brief (?) Explanation
---------------------
I need a win32 server to provide a sort of web-interface to perl Net::Telnet
objects (which is just a wrapper for telnet sessions written in perl). These
objects open sockets/file_handles on the server and have to be accessible to
my server-side scripts throughout multiple client requests.

ie. A session for Client_123 might look like:
	Request 1: Client_123's telnet object is initialized (connects to a
remote telnet host)
	Request 2 -> n-1: A script on the server executes commands on
Client_123's telnet connection
	Request n: Client_123's telnet object is destroyed

>From mod_perl 2.0 docs
(http://perl.apache.org/docs/2.0/os/win32/install.html):
A mod_perl 1.0 enabled server based on Apache 1.3 on Win32 is limited to a
single thread serving a request at a time. This effectively prevents
concurrent processing, which can have serious implications for busy sites.
This problem is addressed in the multi-thread/multi-process approach of
mod_perl 2.0/Apache 2.0

Obviously I need Apache2/mod_perl2 if I want to be able to have more than
one client request executing perl code at the same time. However, I need to
make sure that the Net::Telnet object is accessible (ie. in shared memory,
indexed by the clients session_id) for all of Client_123's request. I was
told that I might be able to use threads::shared to keep the Net::Telnet
objects accessible by multiple mod_perl threads in mod_perl2 and Perl 5.8.0
so that shouldn't be a problem... as long as I use Apache2 / mod_perl 2.0 /
Perl 5.8.0.

Thrown in to the mix is the fact that I need some PHP scripts to communicate
(transfer parameters) to mod_perl scripts, and for the mod_perl to transfer
the results back to the PHP scripts. I have this working using apache notes
in Apache1.3.26 / mod_perl 1.27 / PHP 4.21. However (as mentioned above)
only one mod_perl request (involving telnet stuff) can be served at a time
so I need to upgrade to Apache2, where there isn't apache_note support
(http://bugs.php.net/bug.php?id=17557).