IOCompletion Ports and FCGI application Questions

"Martin Chapman" <[email protected]>
Newsgroups gmane.comp.web.fastcgi.devel
Message-ID <D06C9563C4384F6D8ECD2AB5F692B80A@chapmanm64>
Bill / All,

 

I am currently implementing a fastcgi version of a server that I have on
windows.  My existing server uses iocompletion ports to perform async io on
socket handles.  I noticed in the file os_win32.c that you are using
iocompletion ports on windows in the fastcgi too.  I have a couple of
questions:

 

1.	If I use the fcgi defined functions defined in fcgi_stdio.h to read
and write data on the socket will the underlying fcgi functions use async io
to do this by default?  I am assuming that is the case after looking at the
code but I wanted to make sure I don't have to do anything special in my
code to enable async reads and writes.

 

2.	I like to use the optimized windows function TransmitFile() for
sending data across the network.  Does fcgi take advantage of this function?
If not, is there a way to get a hold of the requesting socket handle from my
fcgi application so I can use that function instead of a fwrite() call?  If
I did do that would it cause problems for the fcgi application framework?

 

3.	I want to make my fcgi executable a single multi-threaded
application in order to cache my application resources.  I am very familiar
with writing multi-threaded applications but wanted to know if anyone has
any tips or examples of the best way to do that with fcgi.  My initial
thought is to create a pool of worker threads that is twice the size of the
number of processors of the machine combined with a second pool of http
requests received by FCGI_Accecpt().  My thread pool manager will broker the
incoming requests to the worker threads and let the FCGI_Accept() block when
my pool is full.  Does this sound like a decent strategy or can I do better?

 

4.	I want to support remote fcgi so I can move my application behind
the firewall and scale across 1 to n application servers.  I don't need per
session support and my target web server will be Apache.  What do I need to
do to make this work?  I have read the docs on the fcgi website but I am not
totally clear on what needs to be done to make this work.  Do I need to
spawn a listener thread for the remote application or is that handled by
fcgi?  Should the remote servers be windows services so I can make sure they
are always avaiable?  Has anyone used remote fcgi processes as services?  Is
that a practical solution?  I will be using TCP for my network
communication.

 

Best regards,

Martin

_______________________________________________
FastCGI-developers mailing list
FastCGI-developers-xGejAJT2w6xVgU18Zptdi0EOCMrvLtNR@public.gmane.org
http://mailman.pins.net/mailman/listinfo.cgi/fastcgi-developers
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.