Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Funktionsausführung abbrechen [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Funktionsausführung abbrechen


 
Sebix
24-04-2008, 08:43 
 
Hallo,
ich hab mal eine Frage: Kann man die Ausführung einer (vordefinierten) Funktion nach einer bestimmten Zeit abbrechen und dann das Skript weiter ausführen?

Danke und Grüße,
Sebastian

 
asp2php
24-04-2008, 09:10 
 
Du kannst höchsten alle Operationen in der Funktion in einer Schleife packen und bei jedem Durchlauf die Zeit prüft, dann kann kann man die ausführung auch unterbrechen, e.g.


...
$end = microtime(true)+20.0; // 20 sec. only
while (microtime(true)<$end) {
...
}


oder Endlosschleife und per if prüfen und mit return aussteigen :dontknow:

 
Sebix
24-04-2008, 09:16 
 
Danke, aber das bringt mir meines Erachtens nichts.

Es handelt sich dabei um eine vordefinierte Funktion, die sich zu einem Server verbinden soll. Es kann aber vorkommen, dass der Server nicht erreichbar ist. Dann bricht das Skript nach einiger Zeit mit einer Fehlermeldung ab.


$loc=new COM("WbemScripting.SWbemLocator");
$wmi=$loc->ConnectServer("testpc","root/cimv2","test","test");
if($wmi) // Verbindung ist hergestellt - PC ist online
{
$online=1;
}
else // Verbindung wurde nicht hergestellt - PC ist offline
{
$online=0;
}


Hat jemand noch ne Ahnung?

 
TobiaZ
24-04-2008, 09:21 
 
Da hast du imho nur eine Chance, wenn du dem wbemLocator einen Timeout angeben kannst. (vgl. fsockopen). Ansonsten wird PHP immer warten, bis der fertig ist.

 
asp2php
24-04-2008, 09:22 
 
Ähm ... was willst du eigentlich :confused: ... fang doch den Fehler ab und gebe vernünftige Fehlermeldung aus ... was soll denn die Frage oben :confused: :dontknow:

 
Sebix
24-04-2008, 09:30 
 
Naja, es dauert ca. ne halb Minute bis der Fehler erscheint. Solange wollte ich den Benutzer eigentlich nicht warten lassen.

@TobiaZ: das guck ich mir mal an, danke.

 
PHP-Desaster
24-04-2008, 11:20 
 
Ähm ... was willst du eigentlich :confused: ... fang doch den Fehler ab und gebe vernünftige Fehlermeldung aus ... was soll denn die Frage oben :confused: :dontknow:Vielleicht ist ja auch die max_execution_time abgelaufen, da hast du keine Chance, das zu fangen!
Es gibt doch bestimmt einen Parameter für das COM-Objekt, da musst du mal die MS-Doku bemühen ^^

 
Sebix
24-04-2008, 14:01 
 
Okay, ich hab mich nochmal ein bisschen belesen. Erstmal hat mir try-catch geholfen, die Fehlermeldung abzufangen, danke dafür. Es soll auch bei der ConnectServer-Funktion einen Timeout-Parameter geben, leider funktioniert der nicht wirklich. Tja, dann muss ich das irgendwie anders lösen.

Trotzdem danke für die schnellen Antworten!


Alle Zeitangaben in WEZ +2. Es ist jetzt 23:27 Uhr.