I thought those things, too... but the following things made me think otherwise:
a) The stream stops after a different number of updates/bytes each time, and will happily go on forever if I put an error-catching loop in the script. b) The same thing is happening in the python script. c) Curl/telnet works fine, so it's not a system resource depletion issue.... ...still confused, -Chad On Mon, Jun 8, 2009 at 4:31 PM, John Kalucki <jkalu...@gmail.com> wrote: > > A theory: The PHP client has stopped reading data, for whatever > reason. The TCP buffers fill on the client host, the TCP window > closes, and wireshark shows no data flowing. netstat(1) will show the > number of bytes waiting in the local TCP buffer. > > Baseless speculation: There's a limitation in the chunked transfer > coding in the PHP client wherein it cannot support endless streams. > Some resource is exhausted or administratively limited (php.ini), and > the stream stops. > > -John Kalucki > Services, Twitter Inc. > > > On Jun 8, 1:16 pm, Chad Etzel <jazzyc...@gmail.com> wrote: >> Hi All, >> >> I am stumped. For several days I have tried to write a simple PHP >> script that can interact with the Streaming API by just pulling in the >> stream and echoing out the contents. This is the script I have: >> >> http://pastie.org/private/9owdxerouwhitz5nfacrw >> >> Right now it just pulls in the feed and echos it. I am not parsing >> anything at the moment. >> >> This works great for a while, then the fread will start timing out >> every 60 seconds (I have set the stream_timeout to 60). It will do >> this after an undeterministic number of updates or number of bytes >> received. >> >> netstat shows I am still connected to stream.twitter.com but Wireshark >> shows that no new data is arriving. >> >> I have tried this on 3 different machines (2 behind the same >> NAT/firewall, and 1 remote server) all with the same results. >> >> I even scraped together a simple python script which should do the >> same thing here: >> >> http://pastie.org/private/k0p5286ljlhdyurlagnq >> >> Same results.... works for a while, then it "stops." >> >> Strangely, if I use CURL or telnet to open a raw socket to /spritzer >> or /gardenhose it stays up forever. I had a telnet socket open on >> /spritzer all weekend with no disconnects... >> >> In the PHP script, if I add code to detect the time-outs and >> immediately disconnect the socket and reconnect, the updates start >> flowing in again... This is nice for error checking, but I'd really >> like to figure out a more robust solution. >> >> 1) Can anyone find anything wrong with the scripts I've posted? >> >> 2) Does anyone have an example PHP script they are using to connect to >> the Streaming API which stays up indefinitely? >> >> I would like to thank John K at Twitter for helping me debug thus far. >> >> Thanks, >> -Chad >