0

file_get_contents() を使用して一部のドメインに ping を実行するための単純な php スクリプトがありますが、ログを確認したところ、get 要求が記録されていません。

私は持っている

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

ここで、各ドメインの $url はhttp://mydomain.com/という形式の単純な文字列であり、echo はこれを検証します。自分で作成した手動リクエストが表示されています。

get 要求がログに表示されないのはなぜですか?

実際に $result をブラウザに送信したときにヒットを登録するようにしています。これは、ウェブサーバーがブラウザのリクエストのみを記録することを意味していると思いますか? PHPでそのようなものを模倣する方法はありますか?

はい、curl 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);   

ただし、同じ効果 - ログに記録されたヒットはありません。これまでのところ、スクリプトからブラウザに http 応答を返したときにのみ登録されます。明らかに、これは単一のリクエストに対してのみ機能し、スクリプトの目的のように大量には機能しません。

他に問題がある場合は、どのデバッグ出力を確認できますか?

編集:おお!私の誤った考えの説明については、受け入れられた回答の下のコメントを参照してください。

4

3 に答える 3

2

リクエストが実際に行われている場合は、ログに記録されます。

サンプルコードが黙って失敗している可能性があります。

するとどうなりますか:

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

それが失敗した場合は、エラー報告またはログ記録をオンにして、その理由を理解することをお勧めします。

注:セーフモードの場合、またはfopen urlラッパーを無効にしている場合、file_get_contents()はリモートページを取得しません。これが失敗する可能性が最も高い理由です($ urlの内容にタイプミスがないと仮定した場合)。

于 2009-11-01T19:57:24.490 に答える
0

代わりにカールを使用しますか?

于 2009-11-01T19:41:06.910 に答える
0

それは変です。たぶん、進行中のキャッシングがありますか?URL を動的に変更しようとしましたか ($url = $url."?timestamp=".time() など)?

于 2009-11-01T19:48:48.750 に答える