Jump to content
Sign in to follow this  
lit-web

Script nach bestimmten Wert anhalten und dann wieder fortsetzen

Recommended Posts

Hallo Leutz heute muss ich mich mal wieder Hilfesuchend an euch wenden.


Ich habe zwar zu meinem problem eine Idee, aber momentan weis ich nur nicht wie umsetzen.


Und zwar programmiere ich gerade an meinem Newsletter in meinem online Shop Script. Nun kann es aber sein das mal sehr viele Emailadressen drin stehen und das Script abbricht wenn maximale Zeit erreicht ist. So wiet so gut.


Meine Idee ist nun folgende. Ich lese die Emailadressen Tabelle aus und ermittel erst mal die Gesamtzahl an vorkommenden Empfängern. Dann lese ich die Tabelle noch mal aus für den Mailversand. In der whileschleife versende ich dann nach und nach die Email an die Empfänger und lasse in der Schleife einen Zähler mitlaufen. Und aller 50 versendeten Mails soll das Script abbrechen und dann wieder die nächsten 50 Mails versenden und das so lange bis nichts mehr da ist.

Das wieder ansetzen des Scriptes zum Weiterversand will ich dann mit einem meta refresh machen.


Soweit zur Theorie, nur weis ich momentan überhaupt nicht wie ich das grad umsetzen soll Programmtechnisch.


Hier men derzeitiger code,ab hier weis ich nicht mehr weiter.


Ich muss da den Vergleich finden ob die Zählvaribable entweder 50 ist oder eben dann immer wieder 50 höher ist, da dann den abruch machen und immer per meta refresh weiter senden bis der Vergleich der Zählervariablen mit dem Gesamtempfengerwert gleich ist und dann komplett das Script beenden.


 

Also wenn Ihr mir da ein wenig Hilfestellung geben könntet wäre das super genial für euch.


Gruß litter

Share this post


Link to post
Share on other sites

check doch einfach ob deine mitlaufende variable $start 50 ist... Wenn ja.. dann ruf die Seite einfach nochmal auf.. und übergib ein offset für den nächsten Schub an Versendungen. Brauchst natürlich dann auch noch eine 2te Mitlauf-Varianle, die die Anzahl der Durchgänge zählt ($i).



ungefähr so:


 

Hoffe ich hab nichts vergessen. Sollte aber ja auch erstmal nur ein Denkanstoss sein.

Schön find cih die Lösung ehrlich gesagt irgendwie nicht.

Share this post


Link to post
Share on other sites

Soll bringen, dass bei einem Dateiaufruf maximal 50 mal sendmail() aufgerufen wird, um die maximal Scriptlaufzeit nicht zu überschreiten.


Hab selber gesagt das ich die Lösung nicht gerade schön finde.

Hast du eine andere Idee?


Ist nicht trotzig gemeint. Würde mich echt interessieren, wie man so ein Problem umgehen könnte außer so "dreckig".

Share this post


Link to post
Share on other sites

Wie wäre es mit der Idee, dass man einen Timer und einen Zähler mitlaufen lässt. Den Timer vergliecht man bei jedem Durchgang mit der max_execution_time. Kurz bevor die max_execution_time überschritten wird ruft man einfach das Script erneut auf, übergibt den Zähler und macht da weiter wo man aufgehört hat.

Share this post


Link to post
Share on other sites

Würd sagen, dafür hängt die Performance viel zusehr von der aktuellen Serverauslastung ab.

Aber eine Idee wär's.

Share this post


Link to post
Share on other sites

Das hat aber einen Haken, man müsste die letzte Empfenger ID speichern und dem Script dann sagen das es bei der darauffolgenden wieder weitermachen soll.


Da ist die Variante das mit einem reinen Zähler zu machen besser. Ich habe schon überlegt das in Form wie einer Blätterfunktion zu machen, aber da weis ich momentan auch grad nicht weiter.

Share this post


Link to post
Share on other sites

Die ID musst du nicht speichern. Das wird doch mit dem SQL Offset gemacht.

Meine Methode entspricht der einer Blätterfunktion. Nur das halt automatisch durchgeblättert wird.

Share this post


Link to post
Share on other sites

Warum haut ihr die ned einfach alle ins BCC oder verwendet eine Mailinglist dafür?

Share this post


Link to post
Share on other sites
Original von mahe

Warum haut ihr die ned einfach alle ins BCC oder verwendet eine Mailinglist dafür?



:wink: [:o]

Share this post


Link to post
Share on other sites

Meine Lösung ist schon allein deswegen scheisse, weil ja der Inhalt der zuversendenen Mail garnicht übermittel wird :gaga:

Share this post


Link to post
Share on other sites

Ich würde an dieser Stelle auch ein !#/bin/bash ansetzen.

Oder "PERL" oder.... ASH oder....

Ansätze gibt es da viele... nur mit php wird es nie sauber.

Share this post


Link to post
Share on other sites

Jo, aber du bist ja auch dein EIGENER Admin [:o] ....

Tja Litti, ich würd sagen, wenn du nicht mit der BASH rankommst, hast du den falschen Provider...


Da fällt mir ein.... Ich brauch schon wieder nen Webserver. Hat der powie noch Kapazität :wink: ?

[ot]

Werbung

Wollt damit nur sagen.... da wirst du rundum glücklich sein. Für kleines Geld: SSH, cronjobs, etc...

[/ot]



lG Henrik

Share this post


Link to post
Share on other sites
Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...