我尝试为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不能在特定主机上运行,我还能尝试其他方法吗?
答案 0 :(得分:1)
您可以通过fsockopen手动发送请求并编写一个基本的HTTP 1.0客户端来执行请求,但如果禁用fopen url包装器,您可能会发现fsockopen也被禁用。
答案 1 :(得分:1)
您可以使用file_get_contents()
,因为它仍然会发送获取请求。但是,fopen
和fsockopen
仍然需要启用allow_url_fopen
。
如果在服务器上启用了安全模式,你将无法进行任何网络交易。 Peradventure在调用免费资源后使用getcontents使用unset()
,因此它不会妨碍性能。