http get — функция php http_get никогда не возвращается

Когда я вызываю http_get, он никогда не возвращается, моя веб-страница просто перестает выводиться в этот момент. Целевой URL никогда не получает запрос.

<?php           //simplest test of http_get I could make
print "http://kayaker.net/php/image.php?id=ORCS084144<br>";
http_get ("http://kayaker.net/php/image.php?id=ORCS084144");
print "<br>back from http_get<br>";
?>

Оригинальный сценарий звонил http_get в цикле для отправки данных нескольким другим процессам на другом сервере.
Цикл останавливается при первом вызове http_get, Я попытался вызвать flush (); после каждой напечатанной строки радости нет. Я пытался установить более длительные таймауты в $options параметр для http_get, это не помогло. Я пробовал звонить http_request с HTTP_METH_GET в первом аргументе та же проблема.

Этот URL каякера не является оригинальным, просто более короткий пример, который все еще не работает. Я взял один из исходных URL-адресов и вставил его в адресную строку браузера, он работал нормально. Я вставил некоторые оригинальные URL-адреса в другой язык сценариев (функция llHTTPRequest в LSL в Open Simulator), и они отлично работают оттуда.

Я хранил программу выше в месте где вы можете запустить его из браузера и увидеть, что это не удалось.
Я вставил URL-адрес вышеупомянутой программы в другой язык сценариев, который по крайней мере возвратил статус ошибки (500) и сообщение «Внутренняя ошибка сервера», что, вероятно, означает, что тестовая программа не завершилась должным образом.

Должно быть, я делаю что-то очень простое, глупое и в основном неправильное.
Но что это?

2

Решение

проблема

У вас, похоже, не установлен правильный пакет (PECL pecl_http> = 0.1.0).

Fatal error: Call to undefined function http_get() in [snip] on line 8

Решение

Вы также можете

  • установите pecl_http, как описано в документация.

  • используйте другую функцию, указанную в комментариях (file_get_contents, curl)

0

Другие решения

Благодаря приведенным выше комментариям и удивительно полезным людям из моей веб-хостинговой компании мне удалось написать следующую функцию:

function http_get($url)
{
$ch = curl_init();    // initialize curl handle
curl_setopt($ch, CURLOPT_URL,$url); // set url to post to
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);// allow redirects
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // return into a variable
curl_setopt($ch, CURLOPT_TIMEOUT, 3); // times out after 4s
$result = curl_exec($ch); // run the whole process
curl_close($ch);
return($result);
} //http_get

Это работает для многих разных URL, но на некоторых серверах происходит сбой, я надеюсь, поиграв с опциями, которые я могу заставить его работать там.

0

По вопросам рекламы [email protected]