每小时更新数据库,无需cronjob

时间:2014-06-25 03:33:00

标签: php mysql cron

好吧,所以我游戏中的用户每小时都有收入。每个小时我都有一个cronjob运行检查,看看是否有时间让他们付款。它可以工作,但我想停止使用cronjobs。这是编码。编码工作,我之前没有使用cronjob做了一些事情,使用时间戳并计算它是否已准备好让用户能够执行该功能,但他们必须为此登录。如果用户没有登录一天左右仍然希望他们每小时获得他们的小时收入而不用cronjob。 这是编码:

<?php
$result = mysql_query("SELECT * FROM users ORDER BY id");
while($row = mysql_fetch_array($result)) {
$total_pay = $row['income'] - $row['upkeep'];
$timestamp_hour = time() + 3600;
$inactive_time = strtotime('+1 week',$row['last_login']);
if(time() > $inactive_time) {
$income_add = '';   
echo '<div style="color: red;">'.$row['username'].' | <i>Inactive</i></div>';   
}
elseif(time() < $inactive_time) {
$income_add = mysql_query("UPDATE users SET cash=(cash+".$total_pay."),energy=(energy+".$e_income.") WHERE id=".$row['id']."");
$update_time = mysql_query("UPDATE users SET payment=".$timestamp_hour." WHERE id=".$row['id']."");
echo '<div style="color: green;">'.$row['username'].' | <i>Active</i></div>';
$res = $income_add & $update_time;
    }
}
?>

如果没有cronjob,他们会这样做吗?

2 个答案:

答案 0 :(得分:-2)

由于评论中的每个人都在说同样的话 - 我想尽可能详细地提供相同的信息,以便为什么要把它作为一个cron工作。

1)没有一个cron作业或者一个睡眠无限运行的作业(本质上它本身就是一个cron作业)没有PHP被执行除非你有足够的流量来通过用户访问激活你的脚本(即检查上次运行是否超过当前时间,然后激活)

2)cron作业的唯一目的是在确定时间的时钟X上激活设置脚本......

3)如果你的cron工作写得足够有效且有足够的故障保护,你可以把它放在资源上,例如: a)不要使用大型数组超载内存 b)不要拉大量数据并让它锁定你的表。 c)让你的cron作业选择特定数量的数据并终止它...如果剩下的cron作业将激活自己并继续工作直到它赶上。一旦赶上它就会快速而轻松地终止。

4)你提到人们在不同的时间获得报酬 - cron工作不应该限制 - 由你的代码和模型来有效地检查那些时间与时间现在检查以便更新,以便cron可以在需要时工作或在不想要的时候睡觉,例如我可以让cron每隔5分钟唤醒一次,但在代码中它可以检查当前时间与上次运行时间(通过选择或最后写入的日志)并检查它是否应该运行。因此,您不应该相信在时钟上运行cron会阻止代码的不同情况激活。

答案 1 :(得分:-5)

您可以使用监视服务在服务器上运行此命令而无需cron作业。请按照以下步骤操作:

  1. 将您的php脚本放在网络路径中的某个位置。
  2. http://www.montastic.com/
  3. 打开免费网站监控帐户
  4. 将网站检查程序指向脚本的网址:www.YourSite.com/yourscript.php
  5. 将监视间隔设置为1小时。
  6. 享受!