0

json形式のguzzleライブラリを使用して、gnipからTwitterデータを継続的にストリーミングしています。

以下は私のコードです

    require_once('vendor/autoload.php');
    $url =https://stream.gnip.com:443/accounts/{account_name}/publishers/twitter/streams/track/dev.json";
    $username = '*****';
    $password = '*****';
    $headers = array('Accept-Encoding' => 'gzip');

    $client = new GuzzleHttp\Client();
    $client->setDefaultOption('headers/Accept-Encoding', 'gzip');
    $data = $client->get($url, ['auth' => [$username, $password]]))
    {
      $tdata = $data->getBody();
     //here i am getting json data continuously,that I have to insert in my db.
     //I have written my code to insert in db and it is inserting in db but after some      time it will not insert in db.


    }

他の最良の方法または利用可能なphpライブラリがある場合は、私に提案してください。

4

1 に答える 1

-2

ベスト プラクティスとして、データベースにデータを挿入するためのレスト サービスを実装できます。休憩サービスがあるとしましょう。

/data/insert

ストリーミングされた各データをそのサービスに次のように送信します。

functiond insertData($data) {}
    $url = 'http://domain.com/data/insert';
    $fields = array(
                            'field1' => urlencode($data["field1"]),
                            'field2' => urlencode($data["field1"]),
                            'field3' => urlencode($data["field1"])
                    );

    foreach($fields as $key=>$value) { 
        $fields_string .= $key.'='.$value.'&'; 
    }
    rtrim($fields_string, '&');

    $ch = curl_init();

    curl_setopt($ch,CURLOPT_URL, $url);
    curl_setopt($ch,CURLOPT_POST, count($fields));
    curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);

    $result = curl_exec($ch);

    curl_close($ch);
}

ストリーム データを取得するときは、この関数を実行するだけで、db にデータを挿入する方法は気にしません。もしかしたら、サービス側でデータ挿入部分を処理できるかもしれません。

于 2014-06-06T12:46:12.723 に答える