Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PhP5中,是否有一种方法可以获取所有服务器的IP地址?_Php_Linux_Apache_Apache2_Lamp - Fatal编程技术网

在PhP5中,是否有一种方法可以获取所有服务器的IP地址?

在PhP5中,是否有一种方法可以获取所有服务器的IP地址?,php,linux,apache,apache2,lamp,Php,Linux,Apache,Apache2,Lamp,基本上,我希望通过6+个接口进行负载平衡下载。我的服务器正在运行Apache2和PHP5,目前我必须手动将所有服务器的ip地址输入到php文件数组中。有没有一种方法可以自动完成 对于每个下载链接,当前代码如下所示: <?php $a = array("192.168.2.x", "192.168.2.x", "192.168.2.x", "192.168.2.x", "192.168.2.x", "192.168.2.x"); $b = rand(0,count($a)-1); echo

基本上,我希望通过6+个接口进行负载平衡下载。我的服务器正在运行Apache2和PHP5,目前我必须手动将所有服务器的ip地址输入到php文件数组中。有没有一种方法可以自动完成

对于每个下载链接,当前代码如下所示:

<?php
$a = array("192.168.2.x", "192.168.2.x", "192.168.2.x", "192.168.2.x", "192.168.2.x", "192.168.2.x"); 
$b = rand(0,count($a)-1);
echo "http://". $a[$b] . "/yourDownload.zip";
?> 


服务器计算机有多个IP,每个NIC一个。这里的情况适用于一个大型局域网聚会,我们希望将文件从主服务器分发给所有玩家。每个玩家都需要大约20GB的文件,所以认真的负载平衡不是特别重要,但服务器即插即用的能力是非常重要的。目前,每当我们使用不同的路由器或DHCP时,我必须手动将IP地址输入php文件本身,这需要时间,而且很容易被忘记,直到它成为一个问题


在上面的代码中,我希望第2行中的数组自动获取NIC的IP,而不是硬编码。

首先,您将如何保持平衡? 使用随机函数是行不通的

这里你有6台服务器,所以你需要在优先级的基础上做一些工作

代码:

<?php

$pages = array('192.168.2.1'=>16.66, '192.168.2.2'=>16.66,'192.168.2.3'=>16.66,'192.168.2.4'=>16.66,'192.168.2.5'=>16.66,'192.168.2.5'=>16.66,'192.168.2.6'=>16.66);


function getServerByWeight(array $weightedValues) {
    $rand = mt_rand(1, (int) array_sum($weightedValues));

    foreach ($weightedValues as $key => $value) {
      $rand -= $value;
      if ($rand <= 0) {
        return $key;
      }
    }
 }


$page = getServerByWeight($pages);


echo "http://".$page. "/yourDownload.zip";

这还不清楚。运行脚本的机器是否有多个IP,或者该脚本从哪个目标机器下载文件。这有很大的不同。服务器机器有多个IP,每个NIC一个。这里的情况适用于一个大型局域网聚会,我们希望将文件从主服务器分发给所有玩家。每个玩家都需要大约20GB的文件,所以认真的负载平衡不是特别重要,但服务器即插即用的能力是非常重要的。目前,每当我们使用不同的路由器或DHCP时,我必须手动将IP地址输入php文件本身,这需要时间,而且很容易被忘记,直到它成为一个问题。