【问题标题】:php: sending 10% of your trafficphp:发送 10% 的流量
【发布时间】:2012-08-14 21:24:26
【问题描述】:

我的代码:

$random_number = mt_rand(1,100);

if ($random_number <= 10){
    header('Location: http://www.site1.com');
} else {
    header('Location: http://www.site2.com');
}

exit;

不用说,如果您有大量流量,这似乎可行,但是当您每天的唯一身份减少到 1000 个左右时,该百分比徘徊在 35% 到 40% 左右。

【问题讨论】:

  • 随机数很少按照您的预期行事。
  • @MarcB 我知道你在那里做了什么! :)
  • 根据您的代码,由于&lt; 实际上应该是&lt;=,用户应该只被重定向(平均)9% 的时间。虽然,tbh,你为什么不只是选择一个随机数 1 到 10 并与数字 1 进行检查?
  • 为什么不在网络服务器上存储一个计数器?计数器可以存储在文件、数据库、memcached、redis 或任何浮动的东西中。只需数到 10,然后重定向并重置计数器。
  • @Nile,其实真正的代码是

标签: php random numbers web-traffic


【解决方案1】:

要更准确地分配流量,请使用负载平衡器或在代码中增加计数器。

Here 是一篇很好的文章,说明了为什么 mt_rand 不是那么随意

【讨论】:

  • 那篇文章说它们的随机性足以用于加密。密码学家并不担心数据的分布,而是担心预测序列的难易程度。像这样使用 monte carlo 应该已经足够了。
【解决方案2】:

如果您想进行一些 A/B 测试,there's a better way than blindly choosing at random,这并不复杂。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2011-09-20
  • 2016-11-17
  • 1970-01-01
  • 1970-01-01
  • 2014-01-26
  • 2020-04-17
  • 2018-12-05
  • 2013-07-02
相关资源
最近更新 更多