PHP:远程函数调用并返回结果?

时间:2011-09-18 09:21:05

标签: php

我对PHP不是很专业。我想知道如何在2个Web服务器之间进行通信。为清除,(从第1台服务器)运行远程服务器上的功能(查询)。并将结果返回给第一台服务器。

实际上主题是:
Web Server (1) ----------------> Web Server (2) ---------------> Database Server
Web Server (1)< ---------------- Web Server (2)< --------------- Database Server

Query Function()仅位于Web Server (2)。然后我需要从query function()远程运行​​Web Server (1)

叫什么?有可能吗?

3 个答案:

答案 0 :(得分:11)

我能想到的一个好方法是通过URL向第二台服务器发送请求。在GET(或POST)参数中,指定要调用的方法,以及(为了安全性)某种随时间变化的散列。那里的哈希确保没有第三方可以在第二台服务器上任意运行该功能。

要发送请求,您可以使用cURL:

function get_url($request_url) {
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $request_url);
  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  $response = curl_exec($ch);
  curl_close($ch);

  return $response;
}

这会发送一个GET请求。然后您可以使用:

$request_url = 'http://second-server-address/listening_page.php?function=somefunction&securityhash=HASH';
$response = get_url($request_url);

在第二台服务器上,设置listening_page.php(当然你喜欢的任何文件名),检查GET请求并验证请求的完整性(即哈希,正确和有效的参数)。

答案 1 :(得分:0)

您可以使用API​​执行此操作。在第二台服务器上创建一个页面,该页面接收变量并使用这些变量与服务器通信(取决于您的需要)。并且该页面的标准回复应该是JSON或XML。然后通过请求该文件并从第二台服务器获取回复,从服务器1读取它。

*注意如果它是私有文件,请确保使用身份验证方法来阻止用户访问该文件

答案 2 :(得分:0)

你的目标绝对是可能的。您需要设置某种api,以便服务器1向服务器2发出请求。

我建议你阅读SOAP和REST api

http://www.netmagazine.com/tutorials/make-your-own-soap-api

通常,您将使用类似CURL的内容与服务器1中的服务器2联系。

谷歌卷曲,你应该很快就会明白。

给你一个完整的解决方案并不容易,所以我希望这个正确方向的推动是有帮助的。