PHP和远程URL调用


PHP and remote URL call

我试图为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在特定主机上不起作用,我可以尝试其他方法吗?

您可以使用file_get_contents(),因为它仍然发送get请求。然而,fopenfsockopen仍然需要启用allow_url_fopen

如果服务器上启用了安全模式,就不可能进行任何网络事务。每次使用getcontents时,都会在调用后使用unset()来释放资源,这样就不会妨碍性能。

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