当我在特定的URL上运行curl时,尽管我已设置了错误报告,但站点停止响应并且不会生成错误。我试着将curl超时设置为低值,然后它会生成一个错误,所以我知道它不会超时。curl_exec导致php脚本停止任何事情
我想知道的主要事情是,这怎么可能发生,我怎么能找出原因?
我试图访问的URL是事实API的调用和URL,我在这里使用
(http://api.factual.com/v2/tables/bi0eJZ/read?api_key=*apikey*&filters= { “类别”: “汽车”, “$ LOC”: {“$ within”:{“$ center”:[[41,-74],80467.2]}})
将它放入浏览器时有效。如果您将经纬度更改为基本上任何其他值,则php脚本将按预期工作。
error_reporting(E_ALL);
ini_set('display_errors', '2');
$url="http://api.factual.com/v2/tables/bi0eJZ/read?api_key=*apikey*&filters={\"category\":\"Automotive\",\"\$loc\":{\"\$within\":{\"\$center\":[[41,-74],80467.2]}},\"website\":{\"\$blank\":false}}";
Echo "\n\n1";
$ch = curl_init($url);
Echo 2;
curl_setopt($ch, CURLOPT_HEADER, 0);
Echo 3;
curl_setopt($ch, CURLOPT_POST, 1);
Echo 4;
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,15);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT,30);
Echo 5;
$output = curl_exec($ch) or die("hhtrjrstjsrjt".curl_error($ch));
Echo 6;
curl_close($ch);
Echo "out: ".$output;
你可以尝试设置一个不同的useragent;我们之前有过垃圾邮件问题,而且我们使用我们不喜欢的垃圾邮件进行有趣的事情。 – 2011-02-14 17:41:51
另外,发布你的API密钥可能不是一个好主意 – DFectuoso 2011-02-14 17:48:11
有一件事:``output = curl_exec($ ch)或die(“hhtrjrstjsrjt”.curl_error($ ch));`不会达到你所期望的。基本上,它正在执行`$ output =(curl_exec($ ch)或die(“hhtrjrstjsrjt”.curl_error($ ch)));`因为它返回一个布尔值而不是字符串。相反,要么将错误检查移动到下一行,要么将其显式分组,如下所示:`($ output = curl_exec($ ch))或die(“hhtrjrstjsrjt”.curl_error($ ch));` – ircmaxell 2011-02-14 17:48:54