PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr (https://www.php-resource.de/forum/)
-   PHP Developer Forum (https://www.php-resource.de/forum/php-developer-forum/)
-   -   [Variablen] Geteilter Mailversand (https://www.php-resource.de/forum/php-developer-forum/25239-variablen-geteilter-mailversand.html)

Crake 29-08-2003 23:33

Geteilter Mailversand
 
Ich habe ein klitzkleines Problem, vermutlich nur einen kleinen Denkfehler. Ich arbeite geradeebend an der nächsten Version meines Newsletterscriptes (textbasiert). Die Einträge befinden sich in einer *.php-Datei innerhalb von PHP-Tags und um einem Servertimeout beim Versand zu umgehen, werden x Einträge versendet und dannach wird die Seite erneut geladen und die nächsten Einträge werden versendet. Leider erzeuge ich immer eine Endlosschleife und der Fehler steckt irgendwo im Detail :(

PHP-Code:

$file = file("../entries/mail.php");

foreach($file as $line => $email)
{
  $email = str_replace("\n", "", $email);

  if($index <= $index_max && $index >= $index_start)
  {
    if($email != "?>" && $email != "<?php")
    {
      //Mailversand
    }
    $index++;
} else header("
locationindex.php?action=send_newsletter&textarea=$textare&subject=$subject&mailmodus=$mailmodus$archiv=$archiv&attachment=$attachment&index=$index&sid=$sid");

$index = Variable zur Durchnummerierung der einzelnen Einträge
$index_max = $index + Versandintervall
$index_start = Wert der Index bei jedem Laden der Seite zugewiesen wird

Danke,
Stephan

Hopka 30-08-2003 00:57

wozu zählst du den index, wenn du die Datei durch foreach jedes mal von vorne abarbeitest?

Crake 30-08-2003 00:59

Nach Erreichen des Wertes $index_max soll die Seite erneut geladen werden, dabei wird der Variable wieder der Wert vom letzten Durchlauf zugewiesen.

Hopka 30-08-2003 01:05

aber du verschickst doch trotzdem immer wieder die gleichen mails, weil du ja immer nur den Anfang von deiner mail.php Adress-Datei abarbeitest, bis dein max-index erreicht ist und dann liest du die Datei neu ein und machst das gleiche nochmal.

Crake 30-08-2003 01:25

So weit war ich inzwischen auch schon, bloß des Rätsels Lösung blieb mir verwährt. :(

Hopka 30-08-2003 01:33

Tja, dann hast du ja schonmal den Fehler.

Mein Tipp ist, das Array ($file) mit ner normalen For-Schleife statt mit Foreach abzuarbeiten, und dann kannst du mit $file[$index] auf die richtige Zeile zugreifen. Wenn du die max. Durchläufe für eine Scriptausführung erreicht hast, dann gibst du den index über die URL weiter und machst beim nächsten durchlauf da weiter, wo du aufgehört hast.

Crake 30-08-2003 02:04

Habs anderweitig gelöst :)

PHP-Code:

$file = file("../entries/mail.php");
foreach($file as $line => $email)
{
  $email = str_replace("\n", "", $email);

  if($line == $index)
  {
    if($email != "?>" && $email != "<?phpr")
    {
      mail("
$email","Betreff","Nachricht","FromStephan <webmaster@programmers-club.de>","-fwebmaster@programmers-club.de");
    }
    $index = $line + $intervall;
    header("
locationindex.php?action=send_newsletter&textarea=$textare&subject=$subject&mailmodus=$mailmodus$archiv=$archiv&attachment=$attachment&file=$file&index=$index&sid=$sid");
  }
}


blackhole 30-08-2003 10:04

Ich würde es aber auch wie Hopka mit ner For-Schleife machen, jedesmal das Array $file ganz zu durchlaufen ist doch überflüssig und kostet nur Zeit.

Crake 30-08-2003 14:12

Zitat:

Original geschrieben von blackhole
Ich würde es aber auch wie Hopka mit ner For-Schleife machen, jedesmal das Array $file ganz zu durchlaufen ist doch überflüssig und kostet nur Zeit.
Also momentan will ich das Script ersteinmal fertig kriegen. Ein Perdormance-Upgrade wird sowieso vor Fertigstellung druchgeführt.


Alle Zeitangaben in WEZ +2. Es ist jetzt 02:41 Uhr.

Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
[c] ebiz-consult GmbH & Co. KG