PHP中的服务器绑定计数器,它会在每午夜重置为零,或者至少看起来是这样


A server-bound counter in PHP that would reset to zero every midnight or at least would seem so

我想知道在PHP中实现计数器的最佳方法,该计数器在一天中被服务器上的一些事件递增,在新的一天到来时(即午夜)将重置为零。可能将与计数器最后一个值相关的日期与当前日期进行比较会使其重置?

编辑:如果计数器在增加的那一刻被重置,如果代码以某种方式计算出计数器最后一次增加是昨天或前一天,该怎么办?这就足够了。

您是否将计数器存储在数据库中?如果是这样的话,你可能只想把上次更改的日期和它一起存储。让我假设你有一个表计数器(名称、值、日期),那么下面的伪代码可能会给你一个想法:

$counter_id='herpderp';
$today = date('dMY');
$date, $value = query("SELECT date, value FROM counters where name='$counter_id'");
if ($date!=$today) {
  $value = 0;
  query("UPDATE counters SET date='$today', value=1 WHERE name='$counter_id' AND date='$date'");
} else {
  query("UPDATE counters value=value+1 WHERE name='$counter_id' AND date='$date'");
}
echo $value;

根据您的服务器,您将能够实现Scheduled Task(Windows)或CRON Job(Linux)。这将允许您的脚本在一天中的特定时间(或晚上)执行。

至于计数器,您可以通过几种方式来实现它。为了数据的完整性和安全性,我会将值存储在数据库中。要递增,请获取值并递增(根据您的DBMS,也有一些方法可以通过单个SQL查询来实现这一点)。否则,您可以始终使用PHP中的I/O命令编辑配置文件。

设置CRON作业/计划任务

如果你给我更多关于你的服务器配置的信息,我可以给你具体的教程,告诉你如何设置你的任务。

一旦你弄清楚了,你就会想要调用一个特定的脚本。您的PHP脚本可以设置如下:

将当前的D/M/Y与前几天进行比较,很可能存储在数据库或配置文件中。如果这一点得到了证实,请更新您的数据库/文件,执行您认为合适的任何分析操作。