For your specific problem, I think Mr. Lemos has provided a viable solution (using print() or echo() and flush() whenever you need to, instead of grabbing the socket and write() to it). My problem however is how you envision solving the communication the other way around (i.e. when the CLIENT wants to send data to the server).
Bogdan Vinod Panicker wrote: > Hi, > > Tx for your very prompt reply. > > Yeah, I'll post the solution as soon as I find it someplace. > > Let me outline the problem in more detail - > > Client (VC++) calls a PHP script on the server, specifies the > connection type as Keep-Alive. The PHP script, somehow (still a big > question) gets the socket on which the apache server has received the > client request (so that it can send data to the client later) and > stores it in a database. > > Now whenever another PHP script wants to send data asynchronously to > the client, it gets the socket from the database, and just calls a > write() on it. Since the connection is still open (Keep-Alive), the > client receives the information, and doesnt have to poll the server > periodically. > > The application of this is indeed destined for a messaging product, > and could benefit a lot of other areas as well. > > The only thing that is needed is the socket from apache. > > Someone somewhere knows how to get this done, i'm sure :) > > Possibly a hack into the PHP module can get this done, i'm open to > suggestions. > > Tx, > Vinod. > > On Tue, 21 May 2002 Bogdan Stancescu wrote : > >> Hi! >> >> I'm looking for an answer to your questions as well, so if you do >> find a solution on other lists, could you please post it here as well? >> >> Regarding the issue, your proposal wouldn't make for full-duplex as >> far as I understand since I don't see how the client would be able to >> send any data on the same connection _after_ getting connected. >> >> What are you using on the other end of the pipe (on the client)? >> Plain HTML? Flash? Java? Something else? >> >> Bogdan >> >> Vinod Panicker wrote: >> >>> Hi, >>> >>> We have developed a client-server application where the server needs >>> to send asynchronous data to the client. Now since we are using >>> Apache/PHP/MySQL, the client needs to poll the server periodically >>> for information. >>> >>> I was thinking if there was some way to get around this basic >>> problem. I understand that this is how things are supposed to work, >>> but it would be just great if i could PUSH data from the server to >>> the client, using HTTP. >>> >>> Since HTTP is a request/response based protocol, Apache would not >>> send any data to the client asynchronously. So what i was thinking >>> was - If i tell the server to allow Keep-Alive connections, and >>> increase the timeout value and max requests, I would effectively >>> have a constant TCP connection. Now the only problem would be of >>> sending asynchronous data to the client. Solution? Here goes - If >>> there was some way in which i could get hold of the file >>> descriptor(socket) that is being used by apache to write data to the >>> client, then i could, from a PHP script also send any data to the >>> client using the socket functions of PHP since i already have the >>> socket with me. >>> >>> This would mean that the client doesnt have to poll the server for >>> data any more... and if the connection does get closed, the client >>> could reconnect to the server asking for another keep-alive connection. >>> >>> Now I know that this is probably the wrong place to put such a query >>> - maybe the apache list would have been better. But since I'm using >>> PHP out here, i thought i'd give it a try. >>> >>> Does the solution sound very outlandish? Are there any pitfalls? >>> And finally, how do i get hold of the socket? >> -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php