2009-11-01 2 views
0

J'ai un simple script php pour envoyer une requête ping à certains de mes domaines en utilisant file_get_contents(), mais j'ai vérifié mes logs et ils n'enregistrent aucune requête get.file_get_contents() Demande GET n'apparaissant pas sur mon serveur web

Je

$result = file_get_contents($url); 
echo $url. ' pinged ok\n'; 

où url $ pour chacun des domaines est juste une simple chaîne de la forme http://mydomain.com/, écho vérifie cela. Les demandes manuelles faites par moi-même montrent.

Pourquoi les demandes get ne s'afficheraient-elles pas dans mes journaux?

En fait, je l'ai pour enregistrer le hit lorsque j'envoie $ resultat au navigateur. Je suppose que cela signifie que le serveur web enregistre uniquement les demandes du navigateur? Y at-il un moyen d'imiter un tel en php?

ok essayé boucle php:

// create curl resource 
$ch = curl_init(); 

// set url 
curl_setopt($ch, CURLOPT_URL, "getcorporate.co.nr"); 

//return the transfer as a string 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

// $output contains the output string 
$output = curl_exec($ch); 

// close curl resource to free up system resources 
curl_close($ch); 

même effet que - sans succès enregistré dans les journaux. Jusqu'à présent, il ne s'enregistre que lorsque je renvoie la réponse http de mon script au navigateur. Évidemment, cela ne fonctionnera que pour une seule requête et non pour un groupe, comme c'est le but de mon script.

Si quelque chose d'autre ne va pas, quelle sortie de débogage puis-je regarder?

Édition: D'oh! Voir les commentaires ci-dessous accepté la réponse pour l'explication de ma pensée erronée.

Répondre

2

Si la demande est en cours, elle apparaîtra dans les journaux.

Votre exemple de code peut échouer silencieusement.

Que se passe si vous le faites:

<?PHP 
if ($result = file_get_contents($url)){ 
    echo "Success"; 
}else{ 
    echo "Epic Fail!"; 
} 

Si ce n'est défaillant, vous aurez envie de tourner sur certains rapports d'erreurs ou de l'exploitation forestière et essayer de comprendre pourquoi.

Remarque: si vous êtes en mode sans échec ou si vous avez fopen url wrappers disabled, file_get_contents() n'attrape pas de page distante. C'est la raison la plus probable pour laquelle les choses échoueraient (en supposant qu'il n'y ait pas de faute de frappe dans le contenu de $ url).

+0

J'ai fait un écho sur une seule requête file_get_contents ($ url) et tout en renvoyant évidemment tout le contenu de la requête à mon navigateur, il a également été enregistré sur le serveur. Donc, l'appel à file_get_contents() fonctionne – rutherford

+0

Et vous dites que si votre script résout la réponse à un navigateur, vous obtenez quelque chose dans le journal du serveur distant? Si vous êtes sûr à 100% que c'est vrai, alors je n'en ai aucune idée. Si vous faites un cas très simple, un script qui ne fait que file_get_contents ($ url), ne crée-t-il pas une entrée de journal? Et quand vous le changez en "echo file_get_contents ($ url);" les entrées de journal commencent à apparaître? – timdev

+0

balles. Ma demande va à un fichier html qui comprend des cadres. C'est l'une des pages de cadres que je vérifie les journaux de.Donc, je suppose qu'une simple requête http ne suit évidemment pas toutes les images incluses de la même manière qu'un navigateur le fait automatiquement. Je suis sûr que c'est un candidat pour l'un de ces badges de type perdant. – rutherford

0

Utilisez curl à la place?

+0

essayé, même effet. voir expansion dans le message original – rutherford

0

C'est bizarre. Peut-être qu'il y a de la mise en cache? Avez-vous essayé de changer l'URL dynamiquement ($ url = $ url. "? Timestamp =". Time() par exemple)?

+0

Non def not. J'ai essayé l'horodatage pour être sûr. – rutherford

Questions connexes