【问题标题】:Execute php code once a week, but random day每周执行一次 php 代码,但随机日期
【发布时间】:2012-05-07 08:22:09
【问题描述】:

我正在为存储在数据库中的商店进行 PHP 促销活动。每周一次,本周内随机日期和时间,我需要运行 sql 查询并显示折扣券。

我正在寻找这样的东西:

if(once_a_week()){
show_discount_coupon();
}

这比我想象的要难,有什么建议可以解决这个问题吗?

【问题讨论】:

  • 每周只要你愿意的时候手动运行脚本,这应该会给你绝对的随机性
  • @NiftyDude:考虑到正常的睡眠时间,这并不是真正的“绝对”辐射。 ;)
  • 显示优惠券的时间范围的粒度是多少?优惠券是从那个时间到周末显示还是只在特定的时间段内显示?
  • @Paul 不确定睡眠时间与随机性有什么关系:o
  • 既然您建议“手动”运行它,我相信他在床上时会一直放松。 ;) 这样一来,整个星期(所有 168 小时)都不会是随机的。

标签: php mysql random


【解决方案1】:

我会在数据库中为每周生成随机日期和时间,然后在您网站的代码中检查它。从数据库中获取日期列表中的第一个日期,并对其进行测试:

if $date_today == $next_coupon_date{ showCoupon(); }

在那一周之后,您删除了这个日期,您将使用下一个日期。 :)

这样,一旦创建了日期,您就再也不必担心任何事情了。

【讨论】:

  • 日期过去后无需手动删除。只需为一年中的每个星期创建一个包含一条记录的表,并在该记录中随机选择一个时间。脚本可以检查是哪一周,拉取对应的时间,如果在该时间的一定小时数内,则显示优惠券。
  • 谢谢,我认为应该这样做
【解决方案2】:

我找到了一种非常快速而肮脏的方法来完全按照您的意愿行事,但它不是很安全:

Link (it's in the third response)

【讨论】:

    【解决方案3】:
    1. 在您的数据库或配置文件中创建两个字段,例如。 "next_week_day","update_time";
    2. 在您的脚本中为字段生成值,

      $next_week_day = rand(1,7);

    3.检查脚本中的日期:

    <?php
      if(date("N") == $next_week_day){
          show_discount_cuppon();
          if($update_time<time()){
             $update_time = time();
          }
        $next_week_day = rand(1,7);
      }
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-02
      • 1970-01-01
      • 1970-01-01
      • 2013-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多