PHP和远程URL调用

时间:2012-01-11 09:30:52

标签: php curl fopen

我尝试为WordPress创建一个插件,该插件需要在某些代码点将一些信息发送到我的服务器。该插件将安装在多个服务器中,具有不同的配置和功能。

我喜欢做的是让该脚本能够在任何PHP配置和服务器功能中与我的服务器通信(只是为了调用我服务器的特定URL)。

这是我的代码:

ini_set("allow_url_fopen", 1);

$d = array('key1' => 'val1', 'key2' => 'val2');
$data = urlencode(serialize($d));

$f = fopen('http://www.my-site.ext/getdata/' . $data . '/', 'r');
if(!$f)
{
    $ch = curl_init();

    if($ch != false)
    {
        curl_setopt($ch, CURLOPT_URL, 'http://www.my-site.ext/getdata/' . $data . '/');
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $contents = curl_exec ($ch);
        curl_close ($ch);
    }
    else
    {
        // IS THERE ANY OTHER METHOD TO TEST IN CASE
        // THE FOPEN AND THE CURL NOT WORK ?
    }
}
else
{
    fclose($f);
}

所以问题是,如果fopen和cURL不能在特定主机上运行,​​我还能尝试其他方法吗?

2 个答案:

答案 0 :(得分:1)

您可以通过fsockopen手动发送请求并编写一个基本的HTTP 1.0客户端来执行请求,但如果禁用fopen url包装器,您可能会发现fsockopen也被禁用。

答案 1 :(得分:1)

您可以使用file_get_contents(),因为它仍然会发送获取请求。但是,fopenfsockopen仍然需要启用allow_url_fopen

如果在服务器上启用了安全模式,将无法进行任何网络交易。 Peradventure在调用免费资源后使用getcontents使用unset(),因此它不会妨碍性能。