Re: Apache2::SubProcess sucks

Torsten Förtsch <[email protected]>
Newsgroups gmane.comp.apache.mod-perl
Message-ID <[email protected]>
On Saturday 20 February 2010 21:24:31 Cosimo Streppone wrote:
> That's really valuable, thanks for sharing.
> However, a question:
> 
> is this something that should be included in Apache2::SubProcess
> to make it better? Or is this something that could be published
> another, separate, CPAN distribution?
> Or maybe it's already out there?
> 
Apache2::SubProcess' purpose is more for creating processes similar to CGI-
scripts. A CGI-script is killed by apache if it does not produce output for a 
certain period of time. Also, the process gets killed I think at the end of 
the request.

I think it could be an Apache2::SubProcess extension. That would mean adding 
the stuff to xs/Apache2/SubProcess/SubProcess_pm in the source tree. But there 
are a few things that are unsolved:

- is there a portable way to get all open file descriptors of the current 
process? Under Linux one can readdir(/proc/self/fd). On Darwin I once simply 
closed all fds from 0 to 1000. Some systems have getdtablesize(2), sometimes 
it is getrlimit. Sometimes you can open /dev/something or /proc/self/something 
and read the descriptor table at a certain offset. What the module should do 
on Windows I simply don't know.

If you can solve this problem with apr-functions I think the it can really be 
in Apache2::SubProcess.

- a way of really restoring the perl environment would be good, so that you 
really can fork off subroutines.

But the real reason why it is not shaped out as a separate module yet is that 
the code is really old and quite seldom needed. The main part was written 
around year 2000 for mp1. At that time I didn't know about POSIX::close and 
thus invented my own version like:

  sub SYS_close {6;}		# works on Linux and Darwin
  sub sysclose {
    syscall &SYS_close, shift()+0;
  }

In short, the code was ugly.

And because my solution is Linux-only.

Torsten
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.