-1

PHPスクリプト内から外部ドメインを呼び出す最良の方法は? カールですか?その場合、php はその行が処理されるのを待ってから次に進むので、返されるデータを確認できます。

4

3 に答える 3

4

外部 URL から応答を取得する最も簡単な方法は、file_get_contents() を使用することですが、より多くのオプションが必要な場合や投稿データを送信する場合は、cURL が間違いなく優れた方法です。ただし、これらの関数はどちらも応答を待ちます。PHP は非常に簡単です。

于 2013-03-08T10:28:48.743 に答える
0

Curl、file_get_contents (適切な拡張子をロードしたもの) を使用するか、ソケット作業を行うことができます。

class Tools
{
public static function post_request($url, $datos) 
{
    $resultado=null;
    $datos=http_build_query($datos);
    $url=parse_url($url);

    // extract host and path:
    $host=$url['host'];
    $ruta=$url['path'];

    $socket=fsockopen($host, 80, $errno, $errstr, 30);

    if($socket)
    {
        // send the request headers:
        fputs($socket, "POST $ruta HTTP/1.1\r\n");
        fputs($socket, "Host: $host\r\n");
        fputs($socket, "Content-type: application/x-www-form-urlencoded\r\n");
        fputs($socket, "Content-length: ". strlen($datos) ."\r\n");
        fputs($socket, "Connection: close\r\n\r\n");
        fputs($socket, $datos);

        while(!feof($socket))
        {
            $resultado.= fgets($socket, 128);
        }
    }
    else die('ERROR');

    fclose($socket);

    $resultado=explode("\r\n\r\n", $resultado, 2);
    $header=isset($resultado[0]) ? $resultado[0] : '';
    $contenido=isset($resultado[1]) ? $resultado[1] : '';

    return array(
        'status' => 'ok',
        'header' => $header,
        'content' => $contenido
        );
    }
};

私の記憶が正しければ、リクエストが処理されるまでスクリプトは進行しません。

于 2013-03-08T10:30:13.540 に答える
0

はい - cURL を使用します。はい、応答 (または失敗) を待ちます。

于 2013-03-08T10:30:14.047 に答える