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
>

Reply via email to