php file abarbeiten ohne Browser zu starten?

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von comrat, 31.05.2005.

  1. comrat

    comrat Thread Starter MacUser Mitglied

    Beiträge:
    112
    Zustimmungen:
    0
    MacUser seit:
    27.12.2004
    Hallo,

    ist es möglich eine php-Datei abarbeiten zu lassen ohne daß der Browser diese aufruft?

    Ich brauche ich dieses Verfahren um permanente Datenbank-Prüfungen im Hintergrund laufen zu lassen. Statt permanent möchte ich diese später regelmäßig laufen lassen, ausgelöst durch einen Terminplaner. Nannte man den scheduler? Danke.

    Wie umgehe ich das Problem der begrenzten Ladezeit des Browsers Safari? Nach meiner kurzen Erfahrung mit ihm, bricht dieser nach 60 Sekunden ab. Und wie umgehe ich einen:
    zitat-anfang
    fatal error: Maximum execution time of 30 seconds exceeded in [...]/create_stock.php on line 141
    zitat-ende

    Mir ist klar, daß dies grundsätzlich an einem schlecht strukturierten Programmablauf oder Datenbestand liegt. Dieser wird auch unverzüglich bereinigt - den Fehler glaube ich schon erkannt zu haben. Interessehalber: Kann ich jedoch kurzzeitig alle genannten Zeitgrenzen ausdehnen, um festzustellen, wie sich das Problem dann verhält?

    Dankbar bin ich für ein paar Stichworte, den genannten Aufgaben zugeordnet, damit ich weiß an welchem Lesestoff ich mein Wissen vertiefen muß. Ganz herzlichen Dank für Eure Zeit und Mühe.
     
    Zuletzt bearbeitet: 01.06.2005
  2. lengsel

    lengsel MacUser Mitglied

    Beiträge:
    4.627
    Zustimmungen:
    53
    MacUser seit:
    25.11.2003
    Ja, hier steht wie:
    http://php3.de/manual/en/features.commandline.php

    Sieht mir aber nicht nach Spaß aus...

    Grüße,
    Flo
     
  3. ApfelRalf

    ApfelRalf MacUser Mitglied

    Beiträge:
    642
    Zustimmungen:
    22
    MacUser seit:
    14.01.2004
    'türlich. In der Shell eingeben: php dateiname.php
    Und wenn es in regelmäßigen Abständen ausgeführt werden soll, einfach in die crontab eintragen

    In der /etc/php.ini die Zeile
    max_execution_time = 30 ; Maximum execution time of each script, in seconds
    suchen und entsprechend abändern.
    Hat übrigens nichts mit dem SAFARI zu tun. Da brechen alle Brwoser ab.

    Gruß vom

    McGyver
     
    Zuletzt bearbeitet: 31.05.2005
  4. comrat

    comrat Thread Starter MacUser Mitglied

    Beiträge:
    112
    Zustimmungen:
    0
    MacUser seit:
    27.12.2004
    Danke für Eure prompten Antworten. Ich werde mir das genauer anschauen.
     
    Zuletzt bearbeitet: 01.06.2005
  5. wegus

    wegus MacUser Mitglied

    Beiträge:
    15.042
    Zustimmungen:
    1.317
    MacUser seit:
    13.09.2004
    Witzigerweise wissen die wenigsten, daß PHP eine vollwertige Scriptsprache ist. Ich verwalte damit seit Jahren beruflich ne Menge Server. Einfach weil es lesbarer ist als z.B. Perl ( finde ich!). Geht ganz einfach. Unter UNIX muß in der ersten Zeile das sogenannte bang! stehen, also der Hinweis wer der Interpreter ist der diese Datei ausführen soll. Dazu wird hinter dem Bang ("#!") einfach der Pfad zum Interpreter angegeben ( hier eben PHP) und schon kann es losgehen:

    In dem Beispiel hier gehe ich von einer entropy.ch-Installation aus:

    PHP:
    #! /usr/local/php5/bin/php
    <?
      print "Ich bin ein Shellprogramm\n";
    ?>
    damit stehen einem PHP und alle Extensions( auch die GD-Lib oder TCP/IP-Funktionen oder FTP-Zugänge auf andere Server offen). Sofern per php.ini erlaubt, kann man auch argc,argv für Startparameter verwenden. Ich verwende diese form des Skriptens als quasi typfreien C-Interpreter schon lange. Seit PHP dabei auch richtig zügig geworden ist, geht das auchsehr angenehm. Damit lassen sich remot-DB's syncen. Backups fahren. Sogar einen Mailfilter für die Firma habe ichmal in PHP geschrieben. Der hat mir zuverlässig alle .EXE, .PIF und Konsorten aus mails entfernt und konnte per Konfiguratiosndatei um Extensions, User und Rechte verändert werden. PHP ist viel mehr als nur eine Webserversprache :D

    enjoy & discover

    Gruß Wegus
     
  6. Jakob

    Jakob MacUser Mitglied

    Beiträge:
    1.067
    Zustimmungen:
    21
    MacUser seit:
    05.01.2004
    Das hört sich sehr interessant an.

    Glaube ich… Verstanden hab ich's noch nicht… :D

    Kannst Du mal kurz umreißen, wie ich z.B. alle 10 Sekunden eine neue Datei anlege (oder sowas) ohne die PHP-Datei per Hand oder crontab aufzurufen?
     
    Zuletzt bearbeitet: 01.06.2005
  7. maceis

    maceis MacUser Mitglied

    Beiträge:
    16.645
    Zustimmungen:
    596
    MacUser seit:
    24.09.2003
    Ne Endlos-Schleife mit den gewünschten Kommandos und einem "sleep 10" sollte da schon genügen.
     
    Zuletzt bearbeitet: 01.06.2005
  8. Jakob

    Jakob MacUser Mitglied

    Beiträge:
    1.067
    Zustimmungen:
    21
    MacUser seit:
    05.01.2004
    Ja, das is klar, aber wegus meint, das geht auch ohne das zutun des Users/eines Programms, wenn ich ihn richtig verstanden habe.

    Wenn ich nur den Code schreibe und ihn auf nen Server setze wird er ja ohne terminal oder Browser nicht ausgeführt, außer -anscheinend- mit wegus Bang!
     
  9. maceis

    maceis MacUser Mitglied

    Beiträge:
    16.645
    Zustimmungen:
    596
    MacUser seit:
    24.09.2003
    Das wäre ja schrecklich.

    Nein, da hast Du was missverstanden.
    Der bang oder shebang gibt nur den Interpreter an, der verwendet wird, um den Programmtext in prozessorlesbare Befehle zu übersetzen.
    Das heisst man kann ein solches Skript einfach über seinen Namen aufrufen und das System weiss dann, ob es das Skript an Perl, Python, einen Shellinterpreter oder eben z. B. an PHP zur Ausführung übergeben muss.

    Anstelle von
    php ./meinSkript
    genügt dann
    ./meinSkript
     
    Zuletzt bearbeitet: 01.06.2005
  10. Jakob

    Jakob MacUser Mitglied

    Beiträge:
    1.067
    Zustimmungen:
    21
    MacUser seit:
    05.01.2004
    Ah! Danke.

    Hatte mich echt gewundert, wenn's das wirklich gäbe wäre wahrscheinlich recht viel Schabernack damit zu betreiben.
     
Die Seite wird geladen...