PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : problem mit cron job für mehrere Benutzer


Taury
14.05.2005, 05:48
Ich habe einen Task geschrieben, der die Werte in einer Tabelle in alle paar Stunden verändern soll.
Für einen einzigen Benutzer klappt das ja, aber das ist natürlich nicht Sinn der Sache.
Ich habe ziemlich wenig Ahnung von PHP und es wäre toll, wenn mir hier jemand aushelfen könnte. Ich beiß mir nämlich schon seit 5 Stunden die Zähne daran aus -.-

Was muss ich ergänzen/umschreiben, damit diese Änderung nicht nur einen einzigen Benutzer betrifft, sondern alle Zeilen (Benutzer) in der Tabelle "inferno_user"? (und zwar, ohne dass sich die Werte gegenseitig beeinflussen)

Hier ist mein Code:
<?php
error_reporting(E_ALL & ~E_NOTICE);
if (!is_object($DB_site))
{
exit;
}

$DB=$DB_site;
$gmember=$DB->query("SELECT * FROM inferno_user WHERE rid={$bbuserinfo['userid']}");
$member=$DB->fetch_array($gmember);
if($member['inbattle']=='0') {
if (($member['hp']+5)<($member['hpm']+1)) {
$DB_site->query("UPDATE inferno_user SET hp=hp+'5' WHERE rid={$bbuserinfo['userid']}");
}
if (($member['mp']+5)<($member['mpm']+1)) {
$DB_site->query("UPDATE inferno_user SET mp=mp+'5' WHERE rid={$bbuserinfo['userid']}");
}
}
if ($member['hp']>$member['hpm']) {
$DB_site->query("UPDATE inferno_user SET hp={$member['hpm']} WHERE rid={$bbuserinfo['userid']}");
}
if ($member['mp']>$member['mpm']) {
$DB_site->query("UPDATE inferno_user SET mp={$member['mpm']} WHERE rid={$bbuserinfo['userid']}");
}
?>

StGaensler
14.05.2005, 11:32
Ich kann leider kein PHP, ich kann dir nur eine prinzipielle Hilfe geben:
Füttere ein Array mit den UserIDs der Benutzer, die du ändern willst.
Packe den restlichen Code in eine Schleife (do ... while), und lasse ihn so oft ausführen, wie viele Werte du im Array hast.
Sorge vor jedem Durchlauf der Schleife dafür, dass die nächste UserID der Schleife "übergeben" wird.

Noch ein kleiner Verbesserungsvorschlag:
Führe nicht für jeden User ein eigenes Query aus, sondern lass dir zuerst alle Datensätze der User, die du bearbeiten willst, ausgeben, bearbeite diese dann, und sichere sie erst danach wieder. Damit bist du mit 2 Querys wesentlich effektiver.