Ich habe folgende Verarbeitung, die ich beschleunigen möchte
Code:
(Pseudocode)
### a.php
UPDATE tbl2 SET merker = '1';
### b.php - diese Verarbeitung soll beschleunigt werden
SELECT text from tbl1 WHERE nummer = 4;
(nummer ist der Primary Key, text wird nach $text geholt)
SELECT id,email from tbl2 WHERE merker = '1' LIMIT 50;
Auf merker liegt ein Index
WHILE ($row = mysql_fetch_assoc($erg)) {
Baue aus $txt und $row['email'] mit phpMailer eine mail
UPDATE tbl2 SET merker = '0' WHERE id = $row['id'];
(id ist der Primary Key)
}
Wenn die Schleife durchlaufen wurde,
dann Selbstaufruf per header.location, sonst Exit.
Das funktioniert hervorragend und ist auch ausfallsicher. Falls es einen Abbruch gibt, kann man das Script einfach neu anwerfen und es macht weiter mit den noch markierten Zeilen.
Das Beschränken auf 50 Zeilen pro Durchlauf resultiert aus der Angst vor einem Timeout.
Was kann ich ändern, damit das alles schneller abläuft? Mein Server-Spezi sagt, dass mails schneller rausgedrückt werden als das Script nachliefern kann. Ich bin für jeden Ratschlag dankbar, auch Servertuning (solange mein Server-Spezi das verstehen kann) oder Programmiertechniken, die zunächst vielleicht wie ein Umweg aussehen. Macht es Sinn, alle Emailadressen erst in eine Textdatei zu exportieren und von dort einzulesen?
Ein Geschwindigkeitszuwachs auch nur um Faktor 2 wäre hilfreich, Faktor 6-10 das Wunder von dem ich träume
Wer hat eine Idee?