Script soll nicht auf Anwort von exec() warten

Alles, was PHP betrifft, kann hier besprochen werden.

Script soll nicht auf Anwort von exec() warten

Postby Oepfel » 26. July 2008 16:05

Tach Leuz,

bin hier mal wieder am basteln und bei mir hängts mal wieder etwas. Nun zu meinem Problem:

Ich habe ein php Script, welches per exec eine *.cmd Datei ausführt. Jedoch dauert dieses etwas länger und das Script wartet immer, bis die cmd zu ende gelaufen ist. Wie kann ich das warten umgehen ?

Danke für euere Hilfe

PS: Windows Server 2003 (fals wichtig :roll: )
Oepfel
User avatar
Oepfel
 
Posts: 78
Joined: 10. October 2006 23:16
Location: Wendelstein

Postby Nobbie » 26. July 2008 20:30

>Wie kann ich das warten umgehen ?

Indem Du das tust, was die Dokumentation empfiehlt, Zitat aus http://de.php.net/manual/de/function.exec.php

Beachten Sie auch, dass wenn Sie ein Programm mit dieser Funktion starten und Sie es im Hintergrund laufen lassen möchten, Sie sicherstellen müssen, dass die Ausgabe des Programms in eine Datei oder anderenen Ausgabestream umgeleitet wird. Andernfalls wird PHP solange laufen, bis das Programm beendet ist.


Ist es wirklich zu anspruchsvoll und zu schwer, von alleine in die Doku zu schauen?
Nobbie
 
Posts: 13170
Joined: 09. March 2008 13:04

Postby Xardas der Dunkle » 26. July 2008 20:40

Nobbie wrote:>Wie kann ich das warten umgehen ?

Indem Du das tust, was die Dokumentation empfiehlt, Zitat aus http://de.php.net/manual/de/function.exec.php

Beachten Sie auch, dass wenn Sie ein Programm mit dieser Funktion starten und Sie es im Hintergrund laufen lassen möchten, Sie sicherstellen müssen, dass die Ausgabe des Programms in eine Datei oder anderenen Ausgabestream umgeleitet wird. Andernfalls wird PHP solange laufen, bis das Programm beendet ist.


Ist es wirklich zu anspruchsvoll und zu schwer, von alleine in die Doku zu schauen?


Nur das das unter windoof absolut nix bringt ...
Code: Select all
<?php
exec('tuwas.exe > nul 2> nul');
echo 'Hallo :)';

tuwas.exe ist ein kleines programm in dem 100 mal ein Sleep für eine Sekunde aufgerufen wir ... und was ist passiert gar nischts, da php genüsslich wartet bis das Programm durchgelaufen ist.

Auch das Kommando start, was dafür sorgt das ein Programm in einem neuen Fenster geöffnet wird, hilft bei mir nicht viel.
Last edited by Xardas der Dunkle on 26. July 2008 20:42, edited 1 time in total.
User avatar
Xardas der Dunkle
 
Posts: 482
Joined: 09. March 2008 19:40
Location: /var/www

Postby Nobbie » 26. July 2008 20:41

>Nur das das unter windoof absolut nix bringt ...

Bei mir schon.
Nobbie
 
Posts: 13170
Joined: 09. March 2008 13:04

Postby Xardas der Dunkle » 26. July 2008 20:47

Die Frage ist, wie lange läuft das Testprogramm was du gestartet hast?
User avatar
Xardas der Dunkle
 
Posts: 482
Joined: 09. March 2008 19:40
Location: /var/www

Postby deepsurfer » 26. July 2008 21:34

Schreibt mal eure beiden Code auf, ist sicherlich interessant an zu sehen wie zwei PHP-Gurus eine Testumgebung schreiben.

Könnte man sicherlich auch immer wieder gerne als Testreferenz zu rate ziehen.

grüsse
Deep
User avatar
deepsurfer
AF Moderator
 
Posts: 6440
Joined: 23. November 2004 10:44
Location: Cologne
Operating System: Win-XP / Win7 / Linux -Debian

Postby Xardas der Dunkle » 26. July 2008 22:03

tuwas.exe
Code: Select all
#include <windows.h>
#include <stdio.h>

int main(int args, char* argsv[]) {
    int seconds = 1000, max = 100;
    char buffer[100];

    if(args > 1) {
        seconds = atoi(argsv[1]);
        if(seconds == 0) {
            printf("Unexpected: %s in parameter 1", argsv[1]);
            return 1;
        }
    }

    if(args > 2) {
        max = atoi(argsv[2]);
        if(max == 0) {
            printf("Unexpected: %s in parameter 2", argsv[2]);
            return 2;
        }
    }

    FILE *fp = fopen("bla.log", "w");
    if(fp) {
        for(int i=0; i<max; i++) {
            sprintf(buffer, "Durclauf %d\r\n", (i+1));
            fputs(buffer, fp);
            Sleep(seconds);
        }
        fclose(fp);
    } else {
        printf("Can't open file 'bla.log'");
        return 3;
    }

    return 0;
}


Hingepfuschtes Mischmasch aus C und C++ :roll:
Der Aufruf steht ja oben ...
User avatar
Xardas der Dunkle
 
Posts: 482
Joined: 09. March 2008 19:40
Location: /var/www

Postby Oepfel » 05. August 2008 21:08

Hallo,

erstmal Danke für euere Hilfe. Bin nur leider in letzter Zeit nicht viel zum programieren gekommen und schaue heute mal wieder rein.

Leider ist da jetzt kein echter Lösungsansatz mit dabei oder habe ich da was überlesen ?
Oepfel
User avatar
Oepfel
 
Posts: 78
Joined: 10. October 2006 23:16
Location: Wendelstein


Return to PHP

Who is online

Users browsing this forum: No registered users and 19 guests