【问题标题】:PHP server side incremental counterPHP服务器端增量计数器
【发布时间】:2013-10-21 10:01:07
【问题描述】:

对不起,我是 PHP 新手,需要一些帮助/指导来创建一个可以在服务器端工作的计数器,所以我想更新一个初始值?

例如,我需要从 1500 的基数开始,并让该数字每 2 分钟增加 1,显然这样任何访问者每次访问都会看到增加的数字。

初始值需要存sql还是txt文件可以更新?

任何帮助都会很棒,

谢谢

【问题讨论】:

    标签: php sql count


    【解决方案1】:

    如果你愿意,可以在SQL 中完成,但文本文件也可以,只需保存一个值(1500),然后创建一个cronjob 并让它执行一个PHP 文件,您将在其中执行必须设置执行 SQL 查询的代码,该查询更新该值或代码以每 2 分钟更新一次该文本文件。

    例子:

    # Every two minutes
    */2 * * * * /your/path/too/this/file/updatecode.php
    

    在您的PHP 文件中:

    $SQL = "UPDATE table SET columnname = columname + 1";
    // etc...
    
    // OR the text file update code
    

    【讨论】:

      【解决方案2】:

      如果您出于某种原因不需要专门存储它,那么您不需要运行 cron 等...获取您想要开始的特定时间点的时间戳。然后计算分钟数并将其添加到您的起始编号 (1500)

      //Start Number
      $n = 1500;
      $cur_time = time();
      $orig_time = strtotime("2013-10-21 10:00:00");
      
      //New Number + difference in minutes (120 seconds for 2 mins) since start time
      $newn = $n + round(abs($cur_time - $orig_time) / 120,0);
      
      // Output New Number
      echo $newn;
      

      如果你想在一行中复制/粘贴

       echo 1500 + round(abs(time() - strtotime("2013-10-21 10:00:00")) / 120,0);
      

      【讨论】:

      • 完美,无需存储价值,感谢大家的所有回答。
      【解决方案3】:

      您可以在没有数据库的情况下仅使用日期来完成此操作。计算出两个日期之间的时间差(当前日期和创建脚本时的开始日期),然后将其除以 2 分钟的正确毫秒数,然后将其添加到初始 1500。

      【讨论】:

        【解决方案4】:

        如果需要一个 SQL 数据库来存储它,这可能是矫枉过正。 创建您的号码,将其序列化并将其存储到文件中。下次从文件中加载,反序列化,递增,序列化和保存。 您可以将时间戳与数字一起保存到文件中,以避免每 2 分钟运行一次作业,而是在从文件中加载回数字时计算正确的值。

        类似的东西(但应该添加错误检查等,我还没有真正尝试过确保计算正确......但主要思想应该是可见的)。

        <?php
        
        if(file_exists('mydatafile')) {
          $data = unserialize(file_get_contents('mydatafile'));
          // Calculate correct value based on time stamp
          $data['number'] += round((time() - $data['timestamp']) / 120);
        }
        else {
          // Init the number
          $data["number"] = 1500;
        }
        
        // Print it if you need to here
        
        // Update time stamp
        $data["timestamp"] = time();
        
        // Serialize and save data
        file_put_contents('mydatafile', serialize($data)));
        

        【讨论】:

          猜你喜欢
          • 2014-02-19
          • 2012-05-10
          • 1970-01-01
          • 1970-01-01
          • 2012-02-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多