全球主机交流论坛

标题: 求个简单的php代码 [打印本页]

作者: H²o    时间: 2020-12-11 23:11
标题: 求个简单的php代码
需求: 自建了2个网站  a.x.com/1.zip   ,b.x.com/1.zip  。内容都是一样的,现在想通过访问x.com/1.zip  随机重定向到上面的2台服务器 以达到分流负载的目的。
希望大佬赏个脸 给写个php代码。感谢
作者: 论坛大师    时间: 2020-12-11 23:21
  1. <?php
  2. $url = mt_rand(0, 1) === 0 ? 'http://a.x.com/1.zip' : 'http://b.x.com/1.zip';
  3. header('Location: ' . $url, true, 303);
复制代码

作者: 16qf    时间: 2020-12-11 23:27
  1. $url = mt_rand(0, 1) === 0 ? 'http://a.x.com'.$_SERVER【'REQUEST_URI'】 : 'http://b.x.com'.$_SERVER【'REQUEST_URI'】;
  2. header('Location: ' . $url, true, 303);
复制代码

作者: Syc    时间: 2020-12-11 23:27
这事应该nginx做
作者: 夏生啊    时间: 2020-12-11 23:31
啥不用nginx呢
作者: wang3y2    时间: 2020-12-11 23:32
NG均衡负载不用用PHP跑啊
作者: wjj    时间: 2020-12-11 23:37
本帖最后由 wjj 于 2020-12-11 23:40 编辑

nginx版
  1.    upstream x_zip{
  2.         server a.x.com/1.zip weight=1; #weight是权重的意思,权重越大分配概率越大。
  3.         server b.x.com/1.zip weight=1;
  4.     }
复制代码

  1.     server {
  2.         listen       80;
  3.         server_name  x.com;

  4.         location /1.zip {
  5.                 proxy_set_header         Host $host;
  6.                 proxy_set_header         REMOTE-HOST $remote_addr;
  7.                 proxy_set_header         X-Real-IP $remote_addr;
  8.                 proxy_set_header         X-Forwarded-For $proxy_add_x_forwarded_for;
  9.                 proxy_pass               http://x_zip;
  10.         }
  11.     }
复制代码

作者: usbcdrom    时间: 2020-12-12 02:52
wjj 发表于 2020-12-11 23:37
nginx版

牛P
作者: Cbmcn    时间: 2020-12-12 03:06
mjj藏龙卧虎啊
作者: PHP是最好的语言    时间: 2020-12-12 03:12
论坛大师 发表于 2020-12-11 23:21

伪随机数会死得很惨。。。种子是当前时间
作者: 论坛大师    时间: 2020-12-12 10:09
PHP是最好的语言 发表于 2020-12-12 03:12
伪随机数会死得很惨。。。种子是当前时间

要看使用场景,我认为楼主非要在PHP实现这个功能的话,这种不安全的伪随机数是最优解。PHP还可以生成安全的伪随机数(不单单根据当前时间生成伪随机数),缺点是资源消耗比较大,比生成不安全的伪随机数慢十倍左右。

众所周知,任何程序都无法生成真随机数。要想获取真随机数,最简单的方法是请求第三方api,但是在楼主这个使用场景下每次跳转之前先请求第三方api浪费一两秒时间再跳转也不合适吧?

当然,还有很多其它更优解的方案。比如,使用 Redis 数据库,每次数字加一,判断偶数或奇数进行不同的跳转。但是楼主一毛钱不给,你来帮他写
作者: dvbhack    时间: 2020-12-12 10:22
nginx 明显才是干这个事情的最佳选择啊
作者: myoppo    时间: 2020-12-12 10:28
wjj 发表于 2020-12-11 23:37
nginx版

他应该不会只想分流一个文件
作者: 会翻车吗    时间: 2020-12-12 10:56
访问x.com/1.zip的话不是等于下载压缩包吗,下载压缩包的时候怎么会执行php代码呢?新人不解
作者: 张大牛    时间: 2020-12-12 11:21
会翻车吗 发表于 2020-12-12 10:56
访问x.com/1.zip的话不是等于下载压缩包吗,下载压缩包的时候怎么会执行php代码呢?新人不解 ...

伪静态,什么后缀都没问题
作者: casm    时间: 2020-12-12 11:35
论坛大师 发表于 2020-12-11 23:21

均 衡 负 载
作者: 日后再说    时间: 2020-12-12 11:36
肯定是在nginx层就得分流了啊。
作者: 爱吃醋的醋醋    时间: 2020-12-12 11:40
提示: 作者被禁止或删除 内容自动屏蔽
作者: po888375    时间: 2020-12-12 11:47
这个还是建议用nginx把
作者: 论坛大师    时间: 2020-12-12 11:51
casm 发表于 2020-12-12 11:35
均 衡 负 载

是的,我这代码就是实现了均衡负载
作者: krazy176    时间: 2020-12-12 11:52
  1. <?php
  2. $url = time()%2==0 ? 'http://a.x.com/1.zip' : 'http://b.x.com/1.zip';
  3. header('Location: ' . $url, true, 302);
复制代码

作者: TimCook    时间: 2020-12-12 11:53
nginx反代会消耗x.com流量,下载场景明显不合适,还是php重定向靠谱




欢迎光临 全球主机交流论坛 (https://52.ht/) Powered by Discuz! X3.4