SSH / Crontab在非对象

时间:2015-12-01 20:27:43

标签: php cron

我最近一直在开发一款MMORPG游戏。几乎完成了,只需创建每日cron ..

我有以下代码:

// Bank Interest
$res = $db->query("
    SELECT uid, 
           id, 
           rm_days,
           bank
      FROM sys_users
      LEFT JOIN sys_users_stats ON sys_users.id = sys_users_stats.uid
") or die($db->error);

while ($row = $res->fetch_object()) {
    $multiply = ($row->rm_days >= 1) ? 0.04 : 0.02;
    $interest = ($row->bank >= 15000000) ? ceil(15000000 * $multiply) : ceil($row->bank * $multiply);

    $res = $db->query("UPDATE sys_users_stats SET bank = bank + $interest");

    $rjdRPG->addEvent($row->uid, "You have gained $$interest bank interest.");
}

一切正常,它甚至会在游戏中向我发送事件:

  

您已获得24美元的银行利息。 2015年12月1日下午09:20

如果我手动运行它,只有SSH / Crontab返回错误(测试目的)它正在返回:

  

PHP致命错误:在第22行的/home/RJDGaming/tm/crons/daily.php中调用非对象的成员函数fetch_object()

但它正在将bank列更新为正确的数量。并发出通知,所以似乎一切都好,但我不知道如何解决PHP致命错误,因为一切正常。 $db->error没有返回任何内容,所以我在这里有点迷失。

非常感谢指向正确方向的手指。

1 个答案:

答案 0 :(得分:1)

问题是你在循环中更新$res

$res!   while($row = $res->fetch_object()) {
            $multiply = ($row->rm_days >= 1) ? 0.04 : 0.02;
            $interest = ($row->bank >= 15000000) ? ceil(15000000 * $multiply) : ceil($row->bank * $multiply);

$res!       $res = $db->query("UPDATE sys_users_stats SET bank = bank + $interest");

            $rjdRPG->addEvent($row->uid, "You have gained $$interest bank interest.");
        }