如何在PHP中处理流数据?

时间:2009-07-31 18:08:15

标签: php streaming twitter

Twitter API中有一系列方法(birddog, shadow, and follow)可以打开(主要)永久连接,并允许您关注许多用户。我在bash中使用cURL运行示例连接代码,它运行良好:当我指定的用户写了一条推文时,我在控制台中获得了一个XML流。

我的问题是:我如何使用PHP来访问数据,而这些数据并未作为直接函数调用返回,而是流式传输?这些数据偶尔到达并且不可预测,而且这不是我的事情曾经处理过,也不知道从哪里开始寻找答案。任何有关图书馆或陷阱的建议和描述都将受到赞赏。

5 个答案:

答案 0 :(得分:6)

fopenfgets

<?php
$sock = fopen('http://domain.tld/path/to/file', 'r');
$data = null;
while(($data = fgets($sock)) == TRUE)
{
    echo $data;
}
fclose($sock);

这绝不是一个好的(甚至是好的)代码,但是 应该 提供您需要的功能。您需要添加错误处理和数据解析等。

答案 1 :(得分:2)

我非常确定您的脚本在监听流上的数据约30秒后会超时。即使它没有,一旦你获得了大量的服务器负载,开放和监听连接的绝对数量将使服务器瘫痪。

我建议你看看一个AJAX解决方案,该解决方案调用一个只存储消息队列的脚本。我不确定Twitter API是如何工作的,所以我不确定你是否可以在请求获取所有推文时运行脚本,或者如果你必须让某种守护程序将推文附加到队列中PHP可以通过您的AJAX调用读取和传回。

答案 2 :(得分:2)

现在有些库可以让事情变得更容易(并处理重新连接,套接字处理,TCP退避等棘手的事情),即:

http://code.google.com/p/phirehose/

答案 3 :(得分:0)

我建议使用AJAX。我不是PHP开发人员,但我认为您可以将API调用连接到API并更新您的网页。

答案 4 :(得分:0)

Phirehose绝对是最佳选择:

http://code.google.com/p/phirehose/