php Script neustarten

RaVenC

Mitglied
Hi,
Ich habe folgendes Problem. Vllt. kann mir da ja hier einer helfen :)

Und zwar hab ich ein php script welches ein paar Berchnungen macht, diese in eine Datenbank schreibt.
Damit mir der Arbeitsspeicher nicht wirklich voll läuft möchte ich, dass sich das Script neu startet um den reservierten Speicher wieder frei zu geben.

Hab mir hierfür schon etwas überlegt, allerdings läuft das ganz nicht so wie ich es möchte :(

Das Hauptprogramm nenn ich hier mal test.php

PHP:
<?php #!/usr/bin/php
  $end = time()+300;

  while($now<$end){
    $now = time();
    //Hier ist Datenbankarbeit
    usleep(10000);
  }

  system("php /srv/test2.php");
?>

Nachdem das Script 5 Minuten gelaufen ist soll es, ich nenn es mal test2.php, starten und beendet werden.
test2.php soll test.php wieder neu starten und sich beenden.

PHP:
<?php #!/usr/bin/php
  usleep(10000);
  system("php /srv/test.php");
?>

Hiermit wird allerdings die test.php und die test2.php nachdem sie ihre Aufgabe erfüllt haben nicht beendet.
Das liegt wohl daran, das die von system() eine rückgabe erwarten..
Wenn ich die versuch mit "kill" zu beenden, dann stirbt direkt alles..

Hat wer eine Idee was ich da machen könnte?
 
Jetzt mal ganz blöd gefragt, wenn du das Zeug aus dem Arbeitsspeicher nicht brauchst, wieso machst du nicht eine Schleife die die variablen regelmäßig mit unset leert?
Der Garbage Collector sollte sich doch darum kümmern
 
Unter Linux empfiehlt es sich einen CronJob dafür anzulegen.
Wie das geht kann ich im Moment leider nicht sagen, da ich kein Linux habe.
 
Also..
Wenn ich die Variablen mit unset leere wird nicht aller Arbeitsspeicher geleert ;)
Und mit Cronjobs ist mir zu ungenau..
Ich weiß wie man Cronjobs anlegt ^^

Ich möchte, dass sich nahtlos, nach der beendigung des Scripts, sich dies neu startet.. Mit Cronjobs hab ich dann wohl das Problem, dass je nach Laufzeit des Scriptes (die sich variieren kann) der Cronjob zu spät oder zu früh startet.
Wenn das Script parallel ausgeführt wird, wäre das fatal!

Und Cronjobs lassen sich ja auch nur Minütlich ausführen ;)
 
Reste gibt es immer ;)
Die sicherste Methode ist es den Prozess neu zu starten um wirklich allen genutzen Arbeitsspeicher frei zu geben...

Und dass ist hier auch meine Frage ;)

Hmm... dass mit "kill" direkt alles stirbt liegt wohl daran, dass die Prozesse zusammen hängen...:suspekt:
 
Ist es viel. möglich mit einem Shellscript in regelmäßigem Intervall abzufragen ob der Prozess noch am Laufen ist, wenn nicht, dann halt einfach neu starten?
 
Habs gelöst ^^

PHP:
system("php /srv/test2.php > /dev/null & ");
bzw:
PHP:
system("php /srv/test.php > /dev/null & ");
 
Zurück