Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP Daemon Prozess oder so erstellen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • PHP Daemon Prozess oder so erstellen

    Gibt es in PHP die Möglichkeit ein Script für immer laufen zu lassen(solange der Apache aktiv ist)? Also gemeint ist ein sogenannter Kindprozess, der sich beim beenden des Vaterprozess nicht beendet und für andere Prozesse verwendbar ist.
    Bei Java (Servlet)kann man eine Klasse instanzieren und man ruft dann nur noch die Instanz auf.

    Ich hab nämlich ein langes Initialisierungscript, dass theoretisch nur beim ersten aufruft initialisiert werden brauch und dann später bräuchte man nur noch auf das fertig geladene zugreifen.
    Würde auf jedenfall die Performance erhöhen.

    Wäre schön wenn jemand was weiß.
    MfG SadoChrome
    P.S. hoffentlich versteht ihr was ich meine

  • #2
    PHP ist nicht für sowas gedacht. Du kannst aber PHP auf der Kommandozeile ausführen oder per Cronjobs das PHP-Script aufrufen.

    Schönes Projekt für Kommandozeilenprogramme (phar) ist: https://github.com/box-project/box2

    Dabei nützlich ist:
    PHP-Code:
    <?php
    // Kein Timeout für das Script
    set_time_limit(0);
    Tutorials zum Thema Technik:
    https://pilabor.com
    https://www.fynder.de

    Kommentar


    • #3
      Ich könnte natürlich auch ein Script schreiben mit einer endlos schleife und eine Art Eventhandler programmieren aber ich glaube dass dieses ineffizienter wäre als für jeden Aufruf alles neu zu initialisieren

      Wenn es halt nicht geht muss ich es halt immer neu initialisieren. Für Java Servlet ist mir das Projekt zu anstrengend.

      P.S. Thread kann geschlossen werden oder kann ich es selber irgendwo machen? Bin neu hier.

      Kommentar


      • #4
        Andreas die max_execution_time ist by default 0 im CLI-Modus. Siehe: http://php.net/manual/de/info.config...execution-time

        Was du höchst wahrscheinlich erreichen willst, ist die Performance deiner Anwendung dramatisch zu erhöhen indem du das Bootstrapping nur einmal durchführst. Sowas ist theoretisch und praktisch möglich in dem du deine Anwendung in den Application Server Run Mode versetzt. PHP-PM und Swoole sind da eine gute Hilfe. Symfony ( PHP Framework ) bietet bspw. diesen Runmode via Symfony Proxy, Symfony PHP-PM und Symfony Varnish an.

        Der Application Server Run Mode ist nicht umbedingt neu, Ruby-Apps arbeiten so wenn es um Performance geht, NodeJS auch. Das Prinzip ist einfach. Die Anwendung bringt einen Kontext-sensitiven HTTP Server mit auf dem die Anfragen des ausliefernden Webservers via Proxy umgeleitet werden.

        - https://github.com/php-pm/php-pm
        - https://github.com/swoole/swoole-src
        - http://appserver.io

        Wenn du dedizierte Resourcen schaffen willst die bspw. via Message Queue Daten liefern können, kannst du natürlich einen Daemon bauen. Das geht auch mit Swoole, oder mit Deamon-Implementierungen:
        - https://daemon.io ( möglicherweise mittlerweile inaktiv - nicht geprüft )
        - https://github.com/shaneharter/PHP-Daemon

        - https://en.wikipedia.org/wiki/Message_queue
        [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

        Kommentar

        Lädt...
        X