使用PHP,如何每100次访问触发一次?

使用PHP,如何每100次访问触发一次?,php,Php,感谢您阅读我的问题,以下是我努力实现的目标: 我有一个人们可以访问的PHP网页 我想触发一个作业,该作业大约每100次访问(平均)我的PHP页面就执行一次操作。频率不必非常精确,但从长远来看,统计数据应该接近100左右 我无法写入磁盘,也无法使用数据库(由于负载/性能问题)。因此,我认为这必须在PHP代码中完成,以及如何将它与时间之类的东西联系起来。(类似于生成一个随机数,然后将其与时间匹配,如果匹配,则执行触发的作业,如果不匹配,则继续) 我愿意接受任何想法或建议。如果可能的话,请给我提供示例

感谢您阅读我的问题,以下是我努力实现的目标:

  • 我有一个人们可以访问的PHP网页

  • 我想触发一个作业,该作业大约每100次访问(平均)我的PHP页面就执行一次操作。频率不必非常精确,但从长远来看,统计数据应该接近100左右

  • 我无法写入磁盘,也无法使用数据库(由于负载/性能问题)。因此,我认为这必须在PHP代码中完成,以及如何将它与时间之类的东西联系起来。(类似于生成一个随机数,然后将其与时间匹配,如果匹配,则执行触发的作业,如果不匹配,则继续)


  • 我愿意接受任何想法或建议。如果可能的话,请给我提供示例代码。谢谢

    只需执行以下操作:

    <?php
      $random = mt_rand(1,100);
      if ($random == 100) {
        trigger_your_job_here;
      }
    ?>
    
    
    
    编辑:我最初使用了,但Alix Axel编辑了我的回复,改为使用。当然,这是正确的做法,因为
    mt_rand()
    不仅比
    rand()
    快(根据PHP的文档,速度是四倍),它还修复了各种系统上
    rand()
    的一些缺陷(比如在Windows上,您只能获得高达32767的随机数)


    当然,两者都是伪随机数生成器,不会给出正确的随机数,但对于您的目的来说,这就足够了。例如,您没有选择彩票号码。

    如果您的主机配置支持,您可以写入RAM磁盘或memcached。也就是说,您是否尝试过写入(普通)磁盘以查看它是否真的会导致性能问题?这里最好的方法是尝试一下并获得一些指标。

    每个访问者,或者整个站点?您是否有访问频率的统计数据?例如,你知道每天有100次访问吗?谢谢,我想这就是我想要的答案。@kokoko:用mt_rand()代替。@KoKo:一个简单的片段,将这两种方法的基准测试了100000次:。@CanSpice:你也可以说
    mt_rand()
    rand()
    更随机,如果计数器是本地的,请参阅。或APC/XCache。