andreas : Sript aus anderem Script aufrufen(und schließen!!!)

Hallo!
Ich kenne 4 Methoden ein anders Script aus einem PHP-Script aufzurifen, erstmal per header, per include/require, per meta refresh und Javascript.
Jetzt habe ich das Problem das ich ein Script aufrufen will, und das alte Script schließen möchte. Mit include geht das schonmal nicht, da das 2. einfach eingebettet wird.
Da ich das erste Script von eine Cronjob durchführen lassen möchte kann ich das auch nicht mit dem Header machen, da ja kein Browser da ist, an den der Header geschickt werden könnte.
Kann ich das mit dem Header vieleicht doch auch direkt an ein 2. Script machen? Wenn ja wie?
Meta-refresh und Javascript laufen ja auch nicht ohne Browser.
Also wie kann das noch funktionieren?
Grüße
  Andreas

  1. Moin!

    Ich kenne 4 Methoden ein anders Script aus einem PHP-Script aufzurifen, erstmal per header, per include/require, per meta refresh und Javascript.

    Jetzt habe ich das Problem das ich ein Script aufrufen will, und das alte Script schließen möchte. Mit include geht das schonmal nicht, da das 2. einfach eingebettet wird.

    Ein Script kann man nicht schließen.

    Was du vielleicht meinst ist, das Fenster, in dem sich die Ausgabe des Scriptes befindet, zu schließen.

    Das geht nur mit Javascript, und ist vollkommen unabhängig davon, ob der Inhalt einer HTML-Datei oder das Ergebnis des Scripts drinsteht.

    Da ich das erste Script von eine Cronjob durchführen lassen möchte kann ich das auch nicht mit dem Header machen, da ja kein Browser da ist, an den der Header geschickt werden könnte.

    Erkläre mal genauer, was da wann läuft. Ohne Browser kein Schließen eines Fensters. Und Script 1 wird in keinem Fenster auftauchen. Es kann aber auch keinesfalls das Fenster mit der Ausgabe von Script 2 schließen, weil es einfach keine Möglichkeit zur Kommunikation mit dem Browser hat. Es läuft ja noch nicht mal unter der Obhut des Webservers.

    Du kannst im Prinzip nur per Refresh (wobei egal, ob per header oder meta-refresh) regelmäßig Script 2 anfordern und bei Vorliegen bestimmter Bedingungen die Javascript-Befehle zum Fensterschließen ausgeben.

    - Sven Rautenberg

    1. Hi!
      Das ist gedacht z.B. für Newsletterversand, wenn Scripte nur begrenzt kurz ausgeführt werden dürfen. Z.B. werden Scripte die länger als 20 Sekunden laufen gekillt. Daher könnte man ja auf die Idee kommen, das man z.B. in einer Schleife nur mail 1-500 versendet und dann ein 2. Script aufruft, welches dann 501-1000 versendet..., nur wenn man das z.B. per Include() macht wird das 1. Script ja nicht beendet. Also obwohl es nicht mehr arbeitet(eigentlich ja doch da der Inhalt des 2. einfach eingebunden wird) überschreitet es das Zeitlimit. Da dieser Newsleterversand von einem Cronjob in Gang gebracht wird, funktionieren die ganzen Möglichkeiten, die die Kommunikation mit einem Browser beitet nicht mehr.
      Beenden soll sich das Script selbst, also nicht wie bei Include immer kurz vor Ende ein neues Script einbinden, das das ursprüngliche immer weiterläut, sondern irgendwie DIREKT ein neues Script starten und danach zu Ende laufen(exit;). Das neue Script ist dann ein neuer unabhängiger Prozess.
      Verstehst Du was ich meine?
      Grüße
        Andreas

      1. Moin

        Kein Problem, benutz einfach die 5. Möglichkeit: file("http://www.dein.server.tld/dein/skript.php");

        Das macht eine HTTP-Verbindung auf und bringt so den Server dazu das Skritp auszuführen. Selbst wenn das Originalskript geschlossen wird, läuft das andere Skript weiter. (Vorausgesetzt es gibt keine Daten aus, oder du sagst mit ignore_user_abort() dass er das ignorieren soll)
        Außerdem möchtest du evt. register_shutdown_func() benutzen, um das zweite Skript automatisch aufzurufen wenn das erste zwangsweise beendet wird.
        Evt. reicht dir auch set_time_limit() um das Limit ab- und zu mal zu erhöhen.

        --
        Henryk Plötz
        Grüße aus Berlin

        1. Hi!
          Danke Dir, leider finde ich solche Sachen bis jetzt nur sehr schwer selbst in der PHP-Doku. Aber ich tue mein bestes!

          Grüße
            Andreas