-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 回答