首页 文章

PHP和Curl不适用于特定网址

提问于
浏览
3

我有一个PHP脚本使用Curl来获取有关我们的URL的推文数量;以此URL为例:

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

另外,我'm using Phil Sturgeon' s用于CodeIgniter的Curl库来执行获取:https://github.com/philsturgeon/codeigniter-curl

当我在本地运行脚本时,脚本运行正常 . 但是,当我将它部署到我们的 生产环境 环境时,它会在尝试获取上述Twitter URL时立即中断 .

这是奇怪的事情 . 我对来自Facebook Graph的相同基本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 . 但是,当我让Curl对$ twitter_get_url进行操作时,我似乎遇到了错误 . 不幸的是我无法告诉你错误是什么,因为连接在错误发生后立即重置 . 另外,提醒您,我自己的机器上的同一个Twitter网址运行正常;就在我将它部署到我们的服务器时,它就会中断 .

这是奇怪的事情 . 我尝试ssh'ing到我们的每个服务器并从命令行执行Curl与相同的URL,它工作 . 这证明了呼叫没有被防火墙或其他东西阻挡 .

所以我认为它是's a bug in the CI Curl library I' m使用,因为我尝试使用http://php.net/manual/en/book.curl.php中的http_response函数进行测试,它似乎也引发了错误 .

至于确切的错误;我遇到错误的唯一线索是脚本需要很长时间才能失败并重置连接;所以我认为这可能是暂停 . 我将以下代码放在控制器的顶部以启用错误显示;但仍未收到任何错误消息:

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

非常感谢任何建设性的意见 .

谢谢,弗兰克

2 回答

  • 0

    仅供参考,

    从来没有弄清楚为什么Facebook的URL工作,但Twitter没有 . 我们最终解决了这个问题,使用Tweet按钮的onShare处理程序调用AJAX服务,该服务手动增加共享计数;因此无需直接从Twitter检索共享计数 . 这不是一个完美的解决方案(它不会跟踪转发);但它足以满足我们的需求 .

    无论如何,谢谢大家 .

  • 0

    您可以尝试使用Postman查看's actually going on with the '对话'. It'是Chrome的REST客户端 - https://chrome.google.com/webstore/detail/postman-rest-client/fdmmgilgnpjigdojojpjoooidkmcomcm

    我已经多次对抗REST API了,这有助于弄清楚发生了什么......

相关问题