php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 28.02.2011, 17:09  
Benutzer
 
Registriert seit: 13.10.2008
Beiträge: 70
root66 befindet sich auf einem aufstrebenden Ast
Standard Cron / Worker Skripte

Hallo,

ich möchte regelmäßig eine Aufgaben Queue mit PHP abarbeiten und das Skript mit Cron (wget) aufrufen. Dazu habe ich einige Fragen:

1. Ist es besser, die Anzahl der Aufgaben pro Aufruf zu begrenzen (CPU-Auslastung) und das Skript z.B. nur alle 10 Minuten aufzurufen, oder kann man es auch solange laufen lassen (ignore_user_abort), bis alles abgearbeitet wurde? Kann man die CPU-Last in dem Fall etwas begrenzen? Unter C kenne ich noch den Trick mit der sleep Funktion, die der CPU etwas Luft gibt.

2. Ist es sinnvoll, ein Skript mehrfach aufzurufen und die Aufgaben parallel abzuarbeiten? Falls ja, wie kann man dafür sorgen, daß Aufgaben nicht doppelt abgearbeit werden (Locking)?

3. Falls Punkt 2. nicht sinnvoll ist, wie verhindert man den Mehrfach-Aufruf des Skripts bzw. tote Locks?

Danke,
root66
root66 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 28.02.2011, 17:17  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
eine Aufgaben
Bitte zur Beantwortung von 2) näher spezifizieren.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 01.03.2011, 00:45  
Benutzer
 
Registriert seit: 13.10.2008
Beiträge: 70
root66 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von nikosch Beitrag anzeigen
Bitte zur Beantwortung von 2) näher spezifizieren.
Eine Aufgabe ist z.B. der Versand von Newslettern (kein Spam) über sendmail.
root66 ist offline   Mit Zitat antworten
Alt 01.03.2011, 10:37  
Erfahrener Benutzer
 
Registriert seit: 30.07.2008
Beiträge: 1.167
PHP-Kenntnisse:
Fortgeschritten
xm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphäre
Standard

Vielleicht kommt der BCC-Header für Dich in Frage..
xm22 ist offline   Mit Zitat antworten
Alt 01.03.2011, 16:50  
Erfahrener Benutzer
 
Registriert seit: 29.10.2009
Beiträge: 113
PHP-Kenntnisse:
Fortgeschritten
mYkon befindet sich auf einem aufstrebenden Ast
Standard

http://weierophinney.net/matthew/arc...rs-in-PHP.html
mYkon ist offline   Mit Zitat antworten
Alt 03.03.2011, 00:47  
Benutzer
 
Registriert seit: 13.10.2008
Beiträge: 70
root66 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von xm22 Beitrag anzeigen
Vielleicht kommt der BCC-Header für Dich in Frage..
Ist die Anzahl der Adressen im BCC-Header unbegrenzt?
root66 ist offline   Mit Zitat antworten
Alt 03.03.2011, 01:25  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Newsletter über BCC ist marketingtechnisch häßlich.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 03.03.2011, 03:42  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.874
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

Die Anzahl der übergebbaren BCC's ( Blindkopie-Empfänger ) ist nicht begrenzt nein. BCC ist aber kein Newsletter-Generator, sondern erzeugt lediglich eine Blindkopie der Mail und versendet sie an den Blindkopie-Empfänger. Der erhält eine Mail in der er sieht an wen die Mail ursprünglich gesendet wurde ( To: ... <...> ). Die Korrekte Vorgehensweise beim versenden von Newslettern ist das Senden von Einzelmails an die jeweiligen Empfänger. ( To: <newsletterempfänger> )

Ich empfehle dir beim versenden der Emails einen einzigen Cron-Task zu verwenden. ( Das Cronjob-Script also nur einmal aufzurufen )
Dein Script sollte ein eigenes Job-Table oder einen eigenen gespeicherten Stack dazu nutzen die Mails zu versenden. Die Einfachste möglichkeit hier ( ohne mit Datenbanken zu arbeiten ) wäre ein serialisiertes Array, das du an anderer Stelle generierst und speicherst.

-- erzeuge.jobs.automailer.php --
PHP-Code:
$data = array(
   array(
'to' => 'user1@example.org''name' => 'Max Mustermann'),
   array(
'to' => 'user2@example.org''name' => 'Horst Mustermann'),
   array(
'to' => 'user3@example.org''name' => 'Martin Mustermann'),
   array(
'to' => 'user4@example.org''name' => 'Detlev Mustermann'),
   array(
'to' => 'user5@example.org''name' => 'Heinz Mustermann')
);

file_put_contents('newsletter.receiver.dat'serialize($data)); 
-- cron job script --
PHP-Code:
// config:
$max_mails_per_charge 2;

// do it
$data unserialize(file_get_contents('newsletter.receiver.dat'));

if ( !
is_array($data) ) exit;

$keys range(0$max_mails_per_charge);
$current = array();

foreach ( 
$keys as $vol ) {
   
$on array_shift($data);
   if ( 
$on !== NULL ) {
      
$current[] = $on;
   }
}

file_put_contents('newsletter.receiver.dat'serialize($data));

// $mail ist die Mail-Library - nutze solche statt mail();
// $htmlbody ist der html-code der mail
// $body ist der plain-text content der mail

$mail->htmlbody $htmlbody;
$mail->textbody $body;

foreach ( 
$current as $receiver ) {
   
$singleMail = clone $mail;
   
$singleMail->To($receiver['name']." <".$receiver['to'].">");
   
$singleMail->send();
   unset(
$singleMail);

__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist offline   Mit Zitat antworten
Alt 03.03.2011, 12:34  
Erfahrener Benutzer
 
Registriert seit: 12.05.2005
Beiträge: 1.038
PHP-Kenntnisse:
Fortgeschritten
notyyy befindet sich auf einem aufstrebenden Ast
Standard

http://www.slideshare.net/IanBarber/...-is-the-answer

könnte man sich mal genauer angucken ...
notyyy ist offline   Mit Zitat antworten
Alt 03.03.2011, 16:15  
Benutzer
 
Registriert seit: 13.10.2008
Beiträge: 70
root66 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von tr0y Beitrag anzeigen

Ich empfehle dir beim versenden der Emails einen einzigen Cron-Task zu verwenden. ( Das Cronjob-Script also nur einmal aufzurufen )
Dein Script sollte ein eigenes Job-Table oder einen eigenen gespeicherten Stack dazu nutzen die Mails zu versenden.
Vielen Dank für den Tipp. Ist wahrscheinlich besser für die Performance, auf die Datenbankzugriffe zu verzichten.
root66 ist offline   Mit Zitat antworten
Antwort


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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Script while(true) nur 24h Laufzeit Lightware PHP Einsteiger 13 23.02.2011 07:22
Skripte auf dem Flohmarkt mistermint Off-Topic Diskussionen 4 06.10.2010 23:29
in htaccess Pfad für Bilder und Skripte festlegen nuna Server, Hosting und Workstations 1 17.08.2010 18:10
[Erledigt] cron Fehler SteiniKeule Server, Hosting und Workstations 2 26.03.2010 09:38
PHP-Skript soll ausschließlich für Cron ausführbar sein krischan3000 Server, Hosting und Workstations 3 29.12.2009 13:52
Endlos Skript vs. Cron vs. ... root66 Off-Topic Diskussionen 2 02.11.2009 08:27
Website mittels Cron aufrufen Sunny2006 PHP Tipps 2009 16 16.04.2009 01:39
PHP Skript aktualisiert DB per Cron - Wie überwachen? stewo Datenbanken 6 18.12.2008 08:57
Skripte für einen Onlinefussballmanager Beitragsarchiv 2 30.11.2005 16:05
Apache timeout bei einem Cron mit riesiger Datenmenge PHP-Fortgeschrittene 12 12.04.2005 15:29
Wie groß (KB) sollten/können Skripte sein PHP Tipps 2005 4 08.03.2005 18:16
Cron Jobs Apfeltyp PHP Tipps 2004-2 9 06.12.2004 22:33
PHP 4 --> PHP 5 - Skripte PHP Tipps 2004 1 06.08.2004 10:07
PHP-Dateien per Cron ausführen PHP Tipps 2004 0 23.07.2004 12:05
Cron Job PHP Tipps 2004 7 07.06.2004 02:06

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php worker, php cronjob newsletter, php skript mehfachaufrufen, php worker cron job, php endlos while cron, php script cpu auslastung limitieren, cpu last begrenzen script, newsletter php versenden sleep, \php worker\, cronjob endlos, auslastung php script beschränken, php cronjob while true, php script auslastung beschränken, php script newsletter sleep, php script soll sich solange aufrufen bis alle daten abgearbeitet sind, cronjob mehrere scripte auf einmal aufrufen, php mehrfach aufruf newsletter cronjob, cron automailer, php mehrfachaufruf verhindern, programm php while (true) datenbank überwachen

Alle Zeitangaben in WEZ +2. Es ist jetzt 01:27 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