IMO, you're better off using stream_socket_server() and writing a "real" daemon for that. Abusing fastcgi/cgi to work in that way is only going to bite you in the ass.
--Wez On 3/24/06, Matthew <[EMAIL PROTECTED]> wrote: > I'm sorry if this is the wrong place for this post, I just don't know where > else to go. > > I need some help figuring out how to use FCGI_STDIN with a running php > script. > > I have written a server in c++, which for a while been running php through > it's plain old cgi interface. I have been using php for 2 things, the > obvious one, web pages, and the not so obvious, safe command/server > scripting. I have just implimented a fast-cgi interface to replace the cgi > interface, however, the scripting stuff i had that worked over regular cgi > just doesn't want to work with fast-cgi. > > Basically, the php script outputs a command and arguments, all commands > start with a %, so: > $var = "%print"; > printf("%s hello world\n", $var); > Can be used to print to the user calling the script. > > That part still works fine of course :). > > It doesn't stop there however, some of the %callbacks will return strings of > data over stdin so they can be $var = trim(fgets($STDIN)) for a very simple > and effective method of communicating with the server. > > I've tried doing the same with fast-cgi, but it seems > fopen("php://stdin","r") is not the right place to be reading from. > > I'm sending: > > (C++) > // loops over ever line of input, test it > std::string response = processALineFromCGI-OrFastCGIScript(oneLine) > if(response.compare("NOCMD") == 0) > buffer_to_print_to_user_who_called_this_when_request_finishs(); > else if(response.size() > 0) { > std::string sendout = FCGI_Headerize(response, FCGI_STDIN, ..); > non-blocking_send(sendout); > } > oneLine.erase(); > I use the same function to build the headers for FCGI_BEGIN_REQUEST, > FCGI_PARAMS, FCGI_STDIN on POST input, it works great there(now) > > > Also, is it possible to keep the connection open to php-cgi to avoid > connect/accept calls? Even if it's only fifo so only 1 request can go at a > time? > > If I must I could create a special c++ fast-cgi server that binds a second > port to pipe requests from php streams to the server, but would be a MAJOR > hack for what I'm trying to do.. :-D > > Thanks in advance! > > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: http://www.php.net/unsub.php > > -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php