循环结果PHP或Jquery

时间:2016-02-01 04:01:17

标签: php jquery laravel

我已经为此工作了将近三天,没有取得好成绩。我想在Laravel完成这件事。但我正在寻找任何类型的好主意。

我的产品具有MSRP价格。自产品发布到每小时,每件产品的价格每天下降10%。 但我想展示每天的价格下降,如图所示。

以下是我尝试过的一些方法。他们似乎都不是很干净。

  1. 在数据库中添加1行并称之为价格。 - 编写一个CRON,它将在服务器上每小时运行一次,查看所有产品并在该表中设置新价格。但这意味着我将从服务器中使用大量资源。

  2. 在数据库中添加10个额外的行,并在添加产品时生成价格。然而,我有一个问题,试图弄清楚如何显示它是什么日子,并以红色突出显示。我猜我可以通过jquery做到这一点。不太了解但这会是一种方式吗?

  3. 从该数据库中提取产品,然后循环浏览每个产品并使用此代码生成表格和价格。但是,如果交通流量巨大,那将会吃掉很多服务器。

  4. 还有其他想法吗?任何有用的东西都可以帮助我简化这一点。

    以下是我能够为3ed选项提供的代码。因为我不知道jquery我没有第二个。

    $msrp = 29.59;
    $dayposted = "2016-1-26";
    $cDate = Carbon::parse($dayposted);
    $today = $cDate->diffInDays();
    $days = [];
    $i = 1;
    $percent = 0;
    for($n=0 ;$n<10; $n++) {
        setlocale(LC_MONETARY, 'en_US.UTF-8');
        if ($i == $today) {
            $day = array_add(['day' => 'Day '.$i], 'price' , number_format( $msrp *      ((100-($i*10))/100),2, '.', ''));
            $day = array_add($day, 'class', 'today');
            $price = number_format( $msrp * ((100-($i*10))/100),2, '.', '');
        }
        elseif($i == 10) {
            $day = array_add(['day' => 'Final'], 'price' , number_format( $msrp * ((100-($i*10))/100),2, '.', ''));
            $day = array_add($day, 'class', '');
        }
        else{
            $day = array_add(['day' => 'Day '.$i], 'price' , number_format( $msrp * ((100-($i*10))/100),2, '.', ''));
            $day = array_add($day, 'class', '');
        }
        array_push ($days, $day);
        $i++;
    }
    

    这也是我想要完成的事情。

    Press here to see the image

1 个答案:

答案 0 :(得分:1)

答案取决于你想要完成工作的时间(计算)。

我同意,如果您不需要,每次用户请求信息时进行计算都会明显浪费资源。 然而 ,只要您没有进行大量的迭代,查询或最糟糕的计算数据库中的事情,数学计算就不会非常密集。

话虽如此,如果你真的想确保这些计算不会让你的服务器陷入困境,我建议的解决方案就是在客户端上进行。

您将原始数据返回给客户端并计算浏览器的定价,这样计算就在服务器上完成,并且仅在请求时完成。但是,这可能不是一种选择,因为您可能不希望将定价方法公开给客户。尽管如此,一个简单的javascript函数只是根据now和发布日期之间的差异计算减少百分比,这将是最简单的。

无论如何,这可能是微优化的情况。如果您担心,请执行一些基准测试,看看您的服务器如何在负载下处理它。这是确定这种优化是否必要的唯一方法。