2015-09-02 2 views
2

Lorsque j'appelle http_get, elle ne revient jamais, ma page WEB s'arrête juste de sortir à ce moment-là. L'URL de destination ne reçoit jamais la demande.La fonction http_get de php ne renvoie jamais

<?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>"; 
?> 

Le script original a été http_get appelle dans une boucle pour envoyer des données à plusieurs autres processus sur un autre serveur. La boucle s'arrête sur le premier appel à http_get. J'ai essayé d'appeler flush(); après chaque ligne imprimée, pas de joie. J'ai essayé de définir des délais plus longs dans le paramètre $options à http_get, cela n'a pas aidé. J'ai essayé d'appeler http_request avec HTTP_METH_GET dans le premier argument, même problème.

Cette URL kayaker n'est pas l'original, juste un exemple plus court qui échoue toujours. J'ai pris l'une des URL originales et je l'ai collée dans la ligne d'adresse de mon navigateur, cela a bien fonctionné. J'ai collé certaines des URL d'origine dans un autre langage de script (la fonction llHTTPRequest dans LSL sur Open Simulator) et elles fonctionnent très bien à partir de là.

J'ai stocké le programme au-dessus de at a location où vous pouvez l'exécuter à partir de votre navigateur et voir échouer.
J'ai collé l'URL au programme ci-dessus dans un autre langage de script et au moins retourné un état d'erreur (500) et un message "Internal Server Error" qui signifie probablement que le programme de test ne s'est pas terminé correctement.

Je dois faire quelque chose de très simple et stupide.
Mais qu'est-ce que c'est?

+0

Que disent vos journaux? Est-il même défini, vous pouvez vérifier avec 'function_exists (" http_get ");' –

+0

Ceci est un système d'hébergement WEB commercial, je ne peux pas désinstaller ou réinstaller des versions ou des modules comme toutes les réponses que je vois ici. Heck ils ne me donneront même pas un compte de coquille! La version PHP qu'ils me donnent est 5.2, pas d'autres informations. –

+0

OK, la fonction http_get n'existe pas. Comment puis-je faire une requête HTTP sans elle? –

Répondre

0

Problème

Vous ne semblez pas avoir le bon paquet installé (PECL pecl_http> = 0.1.0).

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

Solution

Vous pouvez

  • installer pecl_http comme décrit dans the documentation.

  • utiliser une autre fonction comme mentionné dans les commentaires (file_get_contents, boucle)

+1

Ok ... Je viens de lire les commentaires en disant exactement la même chose il y a une heure>. <. Partiellement aveugle je suppose. Je vais laisser la réponse ici, donc la réponse n'est pas dans les commentaires, mais les crédits à Bart. – TacoV

0

Merci aux commentaires ci-dessus et les gens étonnamment utiles à mon WEB société d'hébergement, j'ai pu écrire la fonction suivante :

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 

Cela fonctionne pour plusieurs URL différentes, mais ne manque sur certains serveurs, je l'espère en jouant avec les options que je peux le faire fonctionner là-bas.