當我在特定的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