【发布时间】:2010-08-19 22:14:20
【问题描述】:
又来了!我正在尝试编写一组脚本,这些脚本仅在自上次运行以来已超过 15 分钟时才会在页面上运行。基本上,一个自动化脚本每半小时更新一次我的数据库——显示该信息和更新会话变量的页面显然必须在打开数据库时查询数据库。
因此,为了最大程度地减少查询并保持安全,我认为会话变量只有在自上次查看该页面后超过 15 分钟时才会从数据库中更新。我写了一些代码,希望你们在我尝试实现之前先看看它?
if(!isset($_SESSION['time_next'])){
$_SESSION['time_next'] = time() + (15 * 60);
//15 minutes
}
else if(time() >= $_SESSION['time_next']){
//update all the session variables, etc...
$_SESSION['time_next'] = time() + (15 * 60);
}
你怎么看?这行得通吗?
【问题讨论】:
-
您知道每个用户都有自己的会话数据集吗?如果有 100 人查看此页面,您的代码最终会为每个人每 15 分钟运行一次。如果你想每 15 分钟运行一次,你应该使用类似数据库的东西。或者,更好的是,只需使用 cron。
-
是的,我想——这实际上是必要的。这个项目有点像一个网络应用程序,所以同时使用它的每个用户都需要从数据库中访问他们自己的特定数据。基于对每个用户不同的一系列因素,他们的数据可能会以不同的方式显示。所以本质上,是的,脚本需要根据每个用户自己的时间表更新,因为每个用户会看到不同的数据。
-
哦,对不起,我误解了你的回答。是的,数据库上已经有一个 CRON 脚本,它每 30 分钟更新一次。每个个人用户都访问该数据,并将其放入一些显示的会话变量中(并在其他页面中使用)——因此,如果他们导航到不同的页面然后返回,那么此时的数据可能会有所不同。我正在努力做到这一点,因此每次他们返回该页面时都不会查询数据库,仅当它是 15 分钟时才查询,因为我的 30 分钟自动脚本很可能不会在 15 分钟的时间范围内运行。
标签: php time timestamp intervals