Cuando ejecuto curl en una URL en particular, el sitio deja de responder y no genera un error, a pesar de haber configurado el informe de errores. Intenté configurar los tiempos de espera de curvatura en valores bajos, y luego genera un error, así que sé que no está caducando.curl_exec provoca que la secuencia de comandos php deje de hacer nada
Lo principal que quiero saber es, ¿cómo podría suceder eso, y cómo puedo averiguar por qué?
La url Estoy tratando de acceso es una llamada a la API de hecho, y la url que estoy usando aquí
(http://api.factual.com/v2/tables/bi0eJZ/read?api_key=*apikey*&filters= { "categoría": "Automoción", "$ loc": {"$ within": {"$ center": [[41, -74], 80467.2]}})
Funciona cuando lo coloca en un navegador. La secuencia de comandos php funciona según lo previsto si cambia la latitud y longitud esencialmente a cualquier otro valor.
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;
Puede intentar configurar un agente de uso diferente; hemos tenido problemas de correo no deseado antes, y hacemos cosas interesantes con agentes publicitarios que no nos gustan. –
Además, puede que no sea una buena idea publicar tus claves API – DFectuoso
Una cosa: '$ output = curl_exec ($ ch) o die (" hhtrjrstjsrjt ".curl_error ($ ch));' no hará lo que esperas. Básicamente, está haciendo '$ output = (curl_exec ($ ch) o die (" hhtrjrstjsrjt ".curl_error ($ ch)));' en que está devolviendo un booleano en lugar de una cadena. En su lugar, mueva la comprobación de errores a la línea siguiente o agrúpela explícitamente de esta manera: '($ salida = curl_exec ($ ch)) o muere (" hhtrjrstjsrjt ".curl_error ($ ch));' – ircmaxell