AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein [PHP] Newsletter versenden, max_execution_time umgehen
Thema durchsuchen
Ansicht
Themen-Optionen

[PHP] Newsletter versenden, max_execution_time umgehen

Ein Thema von TheMiller · begonnen am 9. Feb 2010 · letzter Beitrag vom 9. Feb 2010
Antwort Antwort
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#1

[PHP] Newsletter versenden, max_execution_time umgehen

  Alt 9. Feb 2010, 14:25
Hallo,

ich habe einen eigenen Root-Server bei 1&1 für meine Projekte. D.h, ich nutze ihn alleine. Nun habe ich eine recht große Community aufgebaut und möchte nun ab und zu Newsletter versenden.

Nun dauert das Senden ja einige Zeit, unter umständen länger, als es die max_execution_time erlaubt.

Nun wollte ich wissen - da einige Scripts auch als CronJob laufen - ob es nicht sinnvoll ist die "m-e-t" auszuschalten. Sollte mal eine Endlosschleife auftreten, kille ich das Script per Shell (Linux).

Andernfalls ist es möglich, die Ausführungsdauer per set_time_limit zu setzen, was aber nur funktioniert, wenn der Safe-Mode ausgeschaltet ist. (Den habe ich glaub ich sogar aus ?)

Ich könnte allerdings die Mails in Paketen versenden - das wäre nicht das Problem. Problematisch ist es nur bei den Mails per Cronjob. Wie soll sich da das Skript mehrfach aufrufen um die nächsten Mail-Pakete zu senden?

Wie macht ihr sowas / zu was könnt ihr mir raten?

Danke im Voraus
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#2

Re: [PHP] Newsletter versenden, max_execution_time umgehen

  Alt 9. Feb 2010, 17:40
Hallo,

Zitat von DJ-SPM:
Nun wollte ich wissen - da einige Scripts auch als CronJob laufen - ob es nicht sinnvoll ist die "m-e-t" auszuschalten. Sollte mal eine Endlosschleife auftreten, kille ich das Script per Shell (Linux).
Nein.

Zitat von DJ-SPM:
Andernfalls ist es möglich, die Ausführungsdauer per set_time_limit zu setzen, was aber nur funktioniert, wenn der Safe-Mode ausgeschaltet ist. (Den habe ich glaub ich sogar aus ?)
Auch nicht gut.

Zitat von DJ-SPM:
Ich könnte allerdings die Mails in Paketen versenden - das wäre nicht das Problem. Problematisch ist es nur bei den Mails per Cronjob. Wie soll sich da das Skript mehrfach aufrufen um die nächsten Mail-Pakete zu senden?

Wie macht ihr sowas / zu was könnt ihr mir raten?
Das Schicken ins Packeten ist eine gute Idee. So regle ich das auch. Per Cronjob ist so eine Sache... Das Problem habe ich jetzt nicht, weil ich meist Python bei den Cronjobs benutze. Wie rufst du denn die PHP-Dateien per Cronjob auf? Indem du den Apache anfragst, oder die PHP-Dateien via "php-cli" direkt aufrufst? Du kannst für cli Ausführung (d.h. dann also ohne Apache) eine seperate Ini definieren. Dort kannst du safe_mode oder max_execution_time ausschalten.

Hoffe du hast das verstanden, sonst erklär' ich es nochmal praxisbezogener.

Liebe Grüße,
Valle
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#3

Re: [PHP] Newsletter versenden, max_execution_time umgehen

  Alt 9. Feb 2010, 17:46
Hm, das klingt nicht schelcht. Ich habe die Scripts immer direkt mit Apache aufgerufen. Hab also eine PHP-Datei erstellt und vor dem PHP "<?php" den Pfad zum Interpreter angegeben.

An einer solchen Erklärung wäre ich interessiert

Danke
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#4

Re: [PHP] Newsletter versenden, max_execution_time umgehen

  Alt 9. Feb 2010, 17:54
Also, das ist ganz einfach. Folgender Eintrag dient jetzt mal als Beispiel für die Datei /etc/ctontab (die du ja hoffentlich kennst. Wenn nicht: "man 5 crontab").

Code:
# m h dom mon dow user   command
17 *   * * *   www-data   php /path/to/script.php
Das Script wird dann als CLI ausgeführt. Dafür brauchst du das Packet php5-cli. Sofern du Debian oder Ubuntu benutzt, wird dann statt der üblichen php.ini unter /etc/php5/apache2/ die php.ini im Verzeichnis /etc/php5/cli/ benutzt. Dort kannst du deine Einstellungen dann seperat vom Apache vornehmen.

Liebe Grüße,
Valle
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#5

Re: [PHP] Newsletter versenden, max_execution_time umgehen

  Alt 9. Feb 2010, 17:58
Ah ok, das schaue ich mir gleich mal an. Danke dir soweit!
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#6

Re: [PHP] Newsletter versenden, max_execution_time umgehen

  Alt 9. Feb 2010, 18:54
Kleiner Tipp: Shebang in den PHP-Dateien setzen:
Code:
#!/usr/bin/php5
<?php
echo 'Hello world!';
?>
(Natuerlich erstmal mit "which php5" den Pfad zur PHP-binary rausfinden und den eintragen)
Anschliessend die Datei ausfuehrbar machen:
Code:
chmod +x helloworld.php
Und dann aufrufen:
Code:
./helloworld.php
Und tadaaaaaa, schon wird was ausgegeben.

@Valle: wenn php-cli installiert wird hat die mitgelieferte php.ini bereits ein hoeheres memory_limit als jene fuer apache2. Ausserdem gibt es noch weitere Unterschiede, die in der PHP-Doku erklaert sind - max_execution_time ist bereits auf 0 gesetzt, weil solche crons doch haeufig fuer die PHP-CLI geschrieben werden.

@DJ-SPM: guck dir mal die Swift-Library an. Diese hat diverse Spooler-Klassen, und wenn ich mich recht erinnere auch eine Mail-Queue, wo du nur noch die geschriebene Queue in nem Cron abarbeiten musst

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#7

Re: [PHP] Newsletter versenden, max_execution_time umgehen

  Alt 9. Feb 2010, 18:59
Hallo,

danke für den Tipp, aber so verfahre ich die ganze Zeit schon, auch mit der Shebang. Nur so kann ich ja keine Paket-Sendung realisieren? Ein Meta-Refresh etc hat ja dort keine Wirkung. Die Seite wird also nur einmal abgearbeitet - das ist ja grad mein Problem.
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#8

Re: [PHP] Newsletter versenden, max_execution_time umgehen

  Alt 9. Feb 2010, 19:01
Zitat von alcaeus:
Kleiner Tipp: Shebang in den PHP-Dateien setzen
Warum so, wenn man doch einfach die php Executable mit dem Pfad zum Script Paramter aufrufen kann?

Zitat von alcaeus:
@Valle: wenn php-cli installiert wird hat die mitgelieferte php.ini bereits ein hoeheres memory_limit als jene fuer apache2. Ausserdem gibt es noch weitere Unterschiede, die in der PHP-Doku erklaert sind - max_execution_time ist bereits auf 0 gesetzt, weil solche crons doch haeufig fuer die PHP-CLI geschrieben werden.
Das weiß ich doch.

Zitat von DJ-SPM:
danke für den Tipp, aber so verfahre ich die ganze Zeit schon, auch mit der Shebang. Nur so kann ich ja keine Paket-Sendung realisieren? Ein Meta-Refresh etc hat ja dort keine Wirkung. Die Seite wird also nur einmal abgearbeitet - das ist ja grad mein Problem.
Wenn du einen Cronjob mit ohne max_execution_time hast,
dann brauchst du die E-Mails nicht mehr in Packete zusammenfassen.

Liebe Grüße,
Valle
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
Antwort Antwort


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 aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz