2012-02-17 12 views
3

、特定のURLのために働いていません。一例として、このURLを使用して:CodeIgniterには、実行するためにもPHPとカールは、私たちのURLに関するつぶやきの数を取得するためにカールを使用してPHPスクリプトを持って

http://urls.api.twitter.com/1/urls/count.json?url=http://stackoverflow.com

、私はフィルチョウザメのカール・ライブラリを使用していますと、取得します。私はローカルでスクリプトを実行すると https://github.com/philsturgeon/codeigniter-curl

は、スクリプトが正常に実行さ。ただし、運用環境に展開すると、上記のTwitter URLを取得しようとするとすぐに破損します。ここで

は奇妙なことです。私はFacebookのグラフから同じベースURLのための同様のカウント検索を実行し、それは運用サーバー上で動作します。以下のサンプルコードを参照してください。

$fb_get_url = "http://graph.facebook.com/?ids=http://stackoverflow.com"; 
    $twitter_get_url = "http://urls.api.twitter.com/1/urls/count.json?url=http://stackoverflow.com"; 

    $fb_response_json = $this->curl->simple_get($fb_get_url, array(CURLOPT_CONNECTTIMEOUT => 10, CURLOPT_FAILONERROR => true)); 
    $twitter_response_json = $this->curl->simple_get($twitter_get_url, array(CURLOPT_CONNECTTIMEOUT => 10, CURLOPT_FAILONERROR => true)); 

simple_getは$ fb_get_urlでうまく動作します。しかし、私は$ twitter_get_urlでgetするためにCurlを持っているとエラーになっているようです。残念ながら、エラーが発生した直後に接続がリセットされ続けるため、エラーの内容を伝えることはできません。また、あなたに思い出させるために、自分のマシン上の同じTwitter URLがうまく動作します。サーバーに展開するときに破損します。ここで

は奇妙なことです。私は各サーバにssh'ingを試み、同じURLでコマンドラインからCurlを実行すると、うまくいきました。それは、その呼び出しがファイアウォールなどでブロックされていないことを証明します。なぜCLの仕事からカールを実行しているが、同じURLで入手できますかするカールのlibを使用しないが壊れているようだ:

は、だから私は把握しようとしている何本ですか?私は、私が使っているCI Curlライブラリのバグだとは思わない。http_response関数を使って、http://php.net/manual/en/book.curl.phpからテストしてみたところ、一見エラーが出たようだ。

正確なエラーについては、私がエラーに持っている唯一の手がかりは、スクリプトが失敗して接続をリセットするのに時間がかかるということです。私はそれがタイムアウトになるかもしれないと思っています。エラー表示を有効にするために、コントローラの上部に次のコードを挿入します。まだエラーメッセージが表示されませんでした:

error_reporting(E_ALL); 
ini_set('display_errors','1'); 

建設的な入力があれば幸いです。

おかげで、FYIフランク

+3

...私はもっと数倍以上のREST APIに対する私の頭を打ちましたが、これは何が起こっていたかの図を支援してきましたhttps://chrome.google.com/webstore/detail/postman-rest-client/fdmmgilgnpjigdojojpjoooidkmcomcm

- それは、ChromeのRESTクライアントですあなたの質問には、しかし、それはあなたがツイッターカウントを取得しているように正式に許可されていないように見えます。 https://dev.twitterを参照してください。com/discussions/5653 –

+0

ライブラリを使用せずにCURLリクエストを作成しようとしましたか? – Brendan

+0

はい、ライブラリを使用する代わりに直接PHP Curlリクエストを試しました。同じ問題がありました。 –

答えて

0

はFacebookのURLが働いた理由を考え出したことはありませんが、Twitterの1はしませんでした。私たちはTweetボタンのonShareハンドラを使ってAJAXサービスを呼び出し、共有カウントを手動でインクリメントして問題を回避しました。 Twitterから直接共有数を取得する必要はありません。それは完璧な解決策ではありません(リツイートを追跡しません)。しかし、私たちのニーズには十分です。

とにかく感謝の人々。

0

あなたは実際には「会話」で何が起こっているかを確認するために郵便配達を使用してみてください。これが答えではない