pcntl_fork() Problem

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • pcntl_fork() Problem

    Hallo zusammen,

    habe da mal eine kleine frage.. undzwar habe ich diesen Fehler, weiss jedoch nicht wie ich es lösen könnte.

    Fatal error: Call to undefined function pcntl_fork() in /var/www/vhosts/meinedomain.de/subdomains/srv1/httpdocs/schell.php on line 15


    php -m sagt mir

    stagate:~# php -m
    [PHP Modules]
    bcmath
    bz2
    calendar
    ctype
    curl
    date
    dba
    dom
    exif
    filter
    ftp
    gd
    gettext
    hash
    iconv
    imap
    ionCube Loader
    json
    libxml
    mbstring
    mime_magic
    mysql
    mysqli
    ncurses
    openssl
    pcntl
    pcre
    PDO
    pdo_mysql
    posix
    Reflection
    session
    shmop
    SimpleXML
    soap
    sockets
    SPL
    standard
    sysvmsg
    sysvsem
    sysvshm
    tokenizer
    wddx
    xml
    xmlreader
    xmlwriter
    xsl
    zip
    zlib

    [Zend Modules]
    the ionCube PHP Loader


    Kann mir da vieleicht jemand helfen? Ich weiss einfach nicht mehr weiter..... Nutze Debian etch 4.0 eigendlich sollte Debian doch die pakete beinhalten oder ?

    lg
    Dragon
    Riek-Media.com - Webhosting riek-media.com
  • Die Option muss gesondert aktiviert werden:

    Prozesskontrollunterstützung in PHP ist nicht standardmäßig aktiviert. Sie müssen die CGI oder CLI Version von PHP mit der --enable-pcntl Konfigurationsoption kompilieren, um Prozesskontrollunterstützung einzuschalten.


    siehe de3.php.net/manual/de/pcntl.installation.php

    Wahrscheinlich ist das Modul zwar installiert, aber nicht aktiviert.

    Vllt ist das ja hilfreich: ubuntuforums.org/showthread.php?t=549953
  • Hi,
    wie startest du das Script überhaupt? Kommandozeile oder Webserver?
    Da du die Datei im htdocs Verzeichnis ablegst könnte man vermuten du willst die Datei über den Webserver aufrufen?

    Dazu muss php aber als CGI Version über Apache eingebunden sein. Das in Apache kompilierte Modul "mod_php" unterstützt es nicht.
    Finde das auch absolut sinnvoll, da Threading nichts in einer Webapp zu suchen hat.

    Das es unter Windows nicht funktioniert, ist dir bestimmt auch klar?
  • das es unter Windows nicht geht ist kla :)

    Wie mache ich das den am besten? Habe zwar in Plesk die einstellung PHP-Unterstützung einmal als Apache Modul und einmal CGI Applikation und einmal FAST CGI Applikation aber wenn ich das umstelle z.b geht es auch nicht.

    Aufrufen tuh ich das ganze derzeit noch via Webserver... sprich den link zur datei... später erledigt das ein cron für mich :)

    lg
    Dragon
    Riek-Media.com - Webhosting riek-media.com
  • das geht in diesem falle nicht da es nicht mal grade ein 20 zeilen code und nicht nur eine datei ist das ganze zusammen ist ein eventhändler und deshalb wird frock da leider benötigt. da der immer weiter laufen soll usw
    Und jetzt ein halbes jahr arbeit wieder von vorne zu machen möchte ich jetzt nicht erlichgesagt... vorallem nicht bei einem Problem sage ich mal..... wenn ich das gelöst habe läuft alles wieder so wie am schnürchen :)


    Hier mal der link zum tutorial vom enenthändler....

    browsergames24.de/modules.php?…s=0&postorder=asc&start=0
    Riek-Media.com - Webhosting riek-media.com
  • Dragon4048 schrieb:

    das geht in diesem falle nicht da es nicht mal grade ein 20 zeilen code

    Und was geht jetzt daran nicht? Für den Code ist es egal ob du ihn via Webbrowser oder Cron aufrufst, nur dass du über den Webbrowser eben weniger Funktionen hast.
    Im Tutorial wird es auch via Kommandozeile gestartet.

    BTW: Verabschiede dich vom Wording "Eventhandler", das ist eine Game Loop.

    Dragon4048 schrieb:

    das geht in diesem falle nicht da es nicht mal grade ein 20 zeilen code und nicht nur eine datei ist das ganze zusammen ist ein eventhändler und deshalb wird frock da leider benötigt. da der immer weiter laufen soll usw
  • ja ich führe bei mir um das ganze zu starten eine sh datei aus die dann sämtliche crons einrichtet sozusagen

    install_cron.sh

    #!/bin/bash


    echo "Wie Lautet der Zielpfad (Ohne '/' am Ende!):"
    read cpath
    echo "0 4,10,16,22 * * * php $cpath/reload_stat.php
    0 0 * * * $cpath/bak/bak.sh
    * * * * * php $cpath/shell2.php
    0 * * * * php $cpath/globalcron.php" > $cpath/cron.txt
    crontab -u root $cpath/cron.txt
    #rm $cpath/cron.txt



    shell2.php

    Quellcode

    1. <?
    2. $shell = shell_exec("ps aux | grep ehshell");
    3. echo "<pre>".$shell."</pre>";
    4. $pos = strpos($shell, "/var/www/vhosts/meinedomain.de/subdomains/srv1/httpdocs/ehshell.php");
    5. if ($pos === false) {
    6. echo "false";
    7. shell_exec("php /var/www/vhosts/meinedomain.de/subdomains/srv1/httpdocs/ehshell.php & disown");
    8. }
    9. ?>



    ehshell.php

    Quellcode

    1. <?
    2. while(1)
    3. {
    4. $shell = shell_exec('ps aux | grep nohup');
    5. //echo "<pre>".$shell."</pre>";
    6. $pos = strpos($shell, "/var/www/vhosts/meinedomain.de/subdomains/srv1/httpdocs/nohup.php");
    7. if ($pos === false) {
    8. echo "false";
    9. shell_exec("php /var/www/vhosts/meinedomain.de/subdomains/srv1/httpdocs/nohup.php & disown");
    10. }
    11. sleep(2);
    12. }
    13. ?>
    Alles anzeigen


    und in der nohup.php taucht ja auch der fehler auf in zeile 15

    Hier mal zeile 13 bis 19

    Quellcode

    1. while($row = mysql_fetch_array($res))
    2. {
    3. $pid = pcntl_fork();
    4. if($pid == -1)
    5. echo "PCNTL_FROK IST NICHT DA";
    6. else if($pid)
    7. {


    Wie kann ich das den behbenen den Fehler der mein Webserver ausspuckt.... wenn ich das in Plesk auf cgi stelle geht das dennoch nicht :(

    Gruß
    Dragon


    EDIT: habs lösen können bin nach der Anleitung vor gegangen und nun läuft es :)

    ubuntuforums.org/showthread.php?t=549953

    Danke Benny.... hate deinen Beitrag völlig übersehn :)
    Riek-Media.com - Webhosting riek-media.com

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Dragon4048 ()

  • stream_socket_pair

    Mit PHP 5.3 ist stream_socket_pair in Windows implementiert. Nun frage ich mich aber, was macht die Funktion eigentlich für einen Sinn wenn man gleichzeitig pcntl_fork auf Windows nicht verwenden kann? Wenn ich einen neuen Prozess über exec() starte habe ich dort ja nicht das gleiche Socket Pair zur Verfügung, die Prozesse können also trotzdem nicht miteinander kommunizieren.