1

基本上,我正在尝试制作一个拆分测试的网络应用程序,但我对如何在没有任何竞争条件的情况下做到这一点有点困惑。

基本上,有3页:

  • main_page.php
  • page1.php
  • page1_alt.php

所以过程如下:

  1. 用户访问 main_page.php
  2. main_page.php 检查 cookie

    • 一个。如果没有 cookie 创建一个 cookie,
    • 湾。检查最后一位访问者被发送到的页面
    • C。将当前访问者发送到另一个页面(如果最后一个访问者访问 page1.php,则将这个访问者发送到 page1_alt.php)

我已经解决了 cookie 问题,我只想知道您认为如何执行步骤 2b 的最佳方法。如果我写信给数据库,那将是不切实际的。如果我引用一个文本文件,它会产生可能的竞争条件。

编辑:如果您认为有比从头开始更简单的方法,请给我一些建议。:)

4

4 回答 4

3

我知道 google analytic 可以进行拆分测试,我不确定您的最终目标是什么,但是使用 GA 它将拆分用户并测试哪个页面最能帮助用户达到目标。抱歉,如果这不是您要找的。

于 2012-08-26T21:20:47.667 回答
3

我不确定我是否完全理解您为什么要这样做,或者为什么写入数据库是不切实际的。如果您想以精确的精度拆分它们,在我看来,这似乎是最好的解决方案。

但是,如果您只需要在没有 DB 访问权限的情况下将它们大致拆分,您可能会很有创意:

if (date('s') % 2 == 1) {
  header("Location: page1.php");
} else {
  header("Location: page1_alt.php");
}

当然,这也有一定的可能性,但由于秒数是平均分布的,如果你有足够的用户,这两个组应该非常接近相等的大小。

于 2012-08-26T21:37:37.930 回答
0

考虑使用会话而不是 cookie。会话是跟踪用户活动的更灵活和安全的方式。

于 2012-08-26T18:52:38.003 回答
0

您应该使用会话header("Location:...);. 从那你可以做这样的事情

    if (!isset($_SESSION["var"])) {
    header("Location: main_page.php");
}

$_SESSION["cookie"]你想把它设置在哪里。我想在您的情况下,您可以将它们设置为最后的页面。然后,您可以检查它是否存在和/或它是什么,并用于header将它们发送到适当的页面。

于 2012-08-26T18:59:43.100 回答