我有一个php文件,我通过cron运行。为了测试,我将它设置为每小时运行一次,但通常每天运行一次。我想要的是,如果玩家的autotechrefinery字段设置为1,那么他们应该从桌子上拿走他们的人口,他们有多少钱,研究用品和技术。php mysql通过cron更新
从那里,我想要的是扣除500研究用品,添加50技术,并从金钱中扣除10%的人口。当我手动运行这个文件时,所有这些似乎都在工作,但是当我让它通过cron自动运行时,有些东西不起作用,因此它将技术设置为50,研究设置为-500,金钱为0
$refCheck = mysql_query("SELECT * FROM players WHERE autotechrefinery='1'");
while($rC = mysql_fetch_array($refCheck)) {
$nation = $rC['nation'];
$pop = $rC['population'];
$rsupplies = $rC['researchsupplies'];
$cash = $rC['money'];
$tech = $rC['technology'];
$newtech = $tech+50;
$newmoney = $cash-($pop*.1);
$newsupplies = $rsupplies-500;
mysql_query("UPDATE players SET money='$newmoney', technology='$newtech', researchsupplies='$newsupplies', techbought='1' WHERE autotechrefinery='1'"); }
在循环结束时,您将'autotechrefinery'设置为1更新每一行,因此每个记录都会根据从db中获取的最后一个记录计算出值。你确定它按预期工作吗? –
您可以添加crontab中的条目以及手动执行的字符串。除此之外,这种更新方法看起来并不安全:另一个脚本可能会更新数据库记录,而您的后续更新会覆盖这些值。更新玩家SET钱=钱 - (人口* 0.1)等将做的伎俩。尽管您可能有一些难以嵌入到SQL语句中的逻辑 –
您正在使用[an **过时的**数据库API](http://stackoverflow.com/q/12859942/19068)并应使用[现代替换](http://php.net/manual/en/mysqlinfo.api.choosing.php)。 – Quentin