【问题标题】:Execute PHP file on different server using PHP使用 PHP 在不同的服务器上执行 PHP 文件
【发布时间】:2017-01-25 08:53:06
【问题描述】:

我目前正在尝试通过划分不同的服务为我的网站添加第二台服务器。一台服务器负责我网站的主要部分,而另一台则负责我的聊天服务。

但是,有时主服务器必须与其他服务器连接,最好只使用 PHP 文件。当用户更改主服务器上的设置时会发生这种情况,例如,应同时通知第二台服务器(即更新数据库)

例如,当用户更改www.example.com/foo.php(服务器1)上的设置时,应向www.sub.example.com/bar.php?setting=1&value=abc(服务器2)发送请求,而不向用户显示第二个请求。它应该在后台进行,最好甚至与用户的请求异步。

有人知道实现这一目标的最佳/最简单方法吗?

【问题讨论】:

    标签: php cross-domain


    【解决方案1】:

    查看 cURL:http://php.net/manual/en/book.curl.php

    这通常是我用于跨域通知的。

    【讨论】:

      【解决方案2】:

      例如使用 curl 发布请求。从 post 数据中获取参数并使用它们来创建请求(您可以使用自己的参数,而不是从 post 数据中)

      //set POST variables
      
      $url = $_POST['url'];
      
      unset($_POST['url']);
      
      $fields_string = "";
      
      //url-ify the data for the POST
      
      foreach($_POST as $key=>$value) { 
      
          $fields_string .= $key.'='.$value.'&'; 
      }
      
      $fields_string = rtrim($fields_string,'&');
      
      //open connection
      
      $ch = curl_init();
      
      //set the url, number of POST vars, POST data
      
      curl_setopt($ch,CURLOPT_URL,$url);
      curl_setopt($ch,CURLOPT_POST,count($_POST));
      curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);
      
      
      //execute post
      
      $result = curl_exec($ch);
      
      //close connection
      curl_close($ch);
      

      【讨论】:

      • 感谢您的示例 :) 虽然我不太明白您为什么要在 foreach 循环中添加“&”符号,但随后您又使用 rtrim 删除了它们。您能否举例说明 $fields_string 的外观?我可以根据必要的键/值对自己轻松地生成它们,我只想知道它们的样子:)
      • 他只删除了最后一个“&”,但保留了分隔每个键/值对的那些。
      猜你喜欢
      • 2013-09-13
      • 2015-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多