[PHP] Schleife nach x Sekunden pausieren lassen?

Imperator

gehört zum Inventar
Schleife nach x Sekunden pausieren lassen?

Hi,

ich habe vor ein script zu schreiben mit dem ich in alle Gästebücher meiner Com gleichzeitig eine Nachricht verschicken kann (Newsletter).

Die einzige Idee für eine Umsetzung war eine Schleife die in x (aktuelle useranzahl) durchläufen immer wieder den selben text in die datenbank einträgt bis jeder user seine nachricht erhalten hat.

Jetzt mag das bei der aktuellen USeranzahl (ca. 70) kein Problem darstellen, was allerdings wenn die useranzahl größer wird :rolleyes:

Jetzt wollte ich das ganze so schreiben das die Schleife alle paar Sekunden pausiert um wieder serverzeit freizugeben und danach weiter macht und das so lange bis am ende alle daten geschrieben wurden.

Weiss jemand wie man so etwas realisieren könnte oder hat vll jemand eine andere idee das ganze ohne schleife umzusetzen? :)

Danke
 

Pennywise

assimiliert
Du weißt aber, dass du mehrere Inserts gleichzeitig machen kannst? Schau dir mal die Syntax von Insert genauer an.
 

Imperator

gehört zum Inventar
Hmm ich weiss nicht ob ich dich jetzt falsch verstehe oder du mich falsch verstanden hast^^
Also ich hab ja nicht für jeden user eine einzelne Tabelle.
Ich will in einer Tabelle (com_gb) den einzelnen user id´s den eintrag zuordnen indem sie in der form (User ID, Absender ID, Time, Nachricht) drin stehen.

Wenn das auch in einem Insert befehl geht dann entschuldige meine unwissenheit ;)
 

Pennywise

assimiliert
Insert ist der Befehl um einen neuen Eintrag in einer gewünschten Tabelle zu erstellen oder was meinst du mit "zuordnen".
 

Imperator

gehört zum Inventar
Ja soweit kenn ich mich aus ;)
Nur ich muss ja so viele einträge in der tabelle machen wie ich user hab
für jeden user einen idividuellen eintrag in der tabelle machen
hoffe du verstehst jetzt was ich meine
 

x45

chronische Wohlfühlitis
Bau dir doch in der Schleife einfach den INSERT-String zusammen. Wenn der dann nachher in etwa in der folgenden Art aussieht:

INSERT INTO mytable (userId, senderId, message) VALUES
(1, 50000, "Hallo du da!"),
(3, 50000, "Hallo du da!"),
(4, 50000, "Hallo du da!"),
(5, 50000, "Hallo du da!"),
(6, 50000, "Hallo du da!");

Dann sagst du einfach mysql_query($insertString) und ab geht die Post. Selbst mit 1000 Datensätzen liegt die Dauer allenfalls im Sekundenbereich -> eine Pause zur Serverentlastung ist also unnötig.
Für jeden User einen eigenen INSERT-String würde natürlich weit mehr Auslastung erzeugen.
 

zonthor

fühlt sich hier wohl
wenn das die Lösung sein soll würde ich mir ernsthaft gedanken über das Datenmodell machen :eek:
 

zonthor

fühlt sich hier wohl
wenn er tatsächlich den Text der nachricht x mal in die Datenbank schreiben will, hätte er sehr hohe redundanzen. Stichwort Normalisierung ;)
 

Pennywise

assimiliert
Diese Probleme wird es abseits vom Reißbrett aber immer wieder geben, dass im Nachhinein Anforderungen entstehen, die ursprünglich nicht geplant waren aber einfach gelöst werden müssen. In dem Moment muss ein Lösungsweg gewählt und entschieden werden was die weniger "schmerzende" Variante ist.
 

Imperator

gehört zum Inventar
zonthor schrieb:
wenn er tatsächlich den Text der nachricht x mal in die Datenbank schreiben will, hätte er sehr hohe redundanzen. Stichwort Normalisierung ;)

Sorry falls ich da jetzt was falsch verstehe aber das ist ja gewünscht.
Jeder User soll diese Nachricht 1x für sich zur verfügung haben, da er diese ja auch löschen kann und dann muss sie den anderen ja immer noch zur verfügung stehen ;)
 

x45

chronische Wohlfühlitis
Imperator schrieb:
Sorry falls ich da jetzt was falsch verstehe aber das ist ja gewünscht.
Jeder User soll diese Nachricht 1x für sich zur verfügung haben, da er diese ja auch löschen kann und dann muss sie den anderen ja immer noch zur verfügung stehen ;)

zonthor hat da schon Recht. Im Sinne der Normalisierung ist das schon richtig, das man in dem Posteingang des Users nur einen Verweis auf die Nachricht setzt ( -> ID). Allerdings bezweifele ich, das deine DB-Struktur so weit normalisiert ist (nicht böse gemeint).

Mehr zum Thema Normalisierung gibt es hier.
 

Imperator

gehört zum Inventar
Ne ist sie auch nich^^
Ist ja auch nur ne "kleine" Community die ich mit nem Freund zusammen gemacht hab ;)

Aber Danke
 

klasch

chronische Wohlfühlitis
Einfacher und der Datenbank zu liebe ist es aber besser den Query String im Gästebuch so zu ändern das er die aktuelle "UserID" AND "NewsID" anzeigt, dann den User News einrichten und den News User verstecken.
 

Polyhistor

nicht mehr wegzudenken
ot:
Du weißt aber schon, das du aus Datenschutzgründen die Menschen die einen Gästebucheintrag machen darauf hinweisen musst ... oder ... ;)
 
Oben