php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 21.11.2008, 22:04  
Moderator
 
Registriert seit: 06.06.2008
Beiträge: 4.945
PHP-Kenntnisse:
Fortgeschritten
Wolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer Anblick
Wolla eine Nachricht über ICQ schicken
Standard Performanceproblem

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?
__________________
Warum denkt mein Hund eigentlich immer dann, wenn es an der Tür klingelt, es sei für ihn?
Wolla ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 21.11.2008, 22:24  
Erfahrener Benutzer
 
Registriert seit: 16.07.2005
Beiträge: 1.007
PHP-Kenntnisse:
Fortgeschritten
brian johnson befindet sich auf einem aufstrebenden Ast
Standard

sorry, ich hab meine glaskugel gestern in die reinigung gegeben von daher kann cih dir nicht helfen..... (meckern, wenn du nicht weißt was das heißt.....)
__________________
PHP4?!?>>>Aktuelle PHP Version: 5.2.11 || 5.3.0
Suse 11.2 *vorfreude*
brian johnson ist offline  
Alt 21.11.2008, 23:23  
Moderator
 
Registriert seit: 06.06.2008
Beiträge: 4.945
PHP-Kenntnisse:
Fortgeschritten
Wolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer Anblick
Wolla eine Nachricht über ICQ schicken
Standard

Ich dachte ich hätte die Struktur der Verarbeitung verständlich dargestellt. Aber ich hole selbst gerne mal die Glaskugel raus und hoffe, dass sie mir verrät, was du nicht verstanden hast
__________________
Warum denkt mein Hund eigentlich immer dann, wenn es an der Tür klingelt, es sei für ihn?
Wolla ist offline  
Alt 22.11.2008, 05:13  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Zitat:
Zitat von Wolla
Ich dachte ich hätte die Struktur der Verarbeitung verständlich dargestellt.
Damit können wir aber nur grob strukturelle Schwächen finden. Die sehe ich jetzt auf Anhieb nicht.
Zitat:
UPDATE tbl2 SET merker = '0' WHERE id = $row['id'];
Das könntest Du als prepared statement umsetzen. Aber einen Faktor 2 sehe ich da nicht.
Du kannst versuchen, das Script mit einem Profiler zu analysieren. Aber davon habe ich bei PHP keine Ahnung (Produkt, Setup, Fehlerquellen usw)
David ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:25 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum