我对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)
。
叫什么?有可能吗?
答案 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联系。
谷歌卷曲,你应该很快就会明白。
给你一个完整的解决方案并不容易,所以我希望这个正确方向的推动是有帮助的。