PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks. |
 |

24-04-2008, 09:43
|
Sebix
Newbie
|
|
Registriert seit: Aug 2007
Beiträge: 20
|
|
Funktionsausführung abbrechen
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
|

24-04-2008, 10:10
|
asp2php
Banned
|
|
Registriert seit: Feb 2004
Beiträge: 11.745
|
|
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.
PHP-Code:
...
$end = microtime(true)+20.0; // 20 sec. only
while (microtime(true)<$end) {
...
}
oder Endlosschleife und per if prüfen und mit return aussteigen
|

24-04-2008, 10:16
|
Sebix
Newbie
|
|
Registriert seit: Aug 2007
Beiträge: 20
|
|
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.
PHP-Code:
$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?
|

24-04-2008, 10:21
|
TobiaZ
 Moderator
|
|
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
|
|
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.
|

24-04-2008, 10:22
|
asp2php
Banned
|
|
Registriert seit: Feb 2004
Beiträge: 11.745
|
|
Ähm ... was willst du eigentlich  ... fang doch den Fehler ab und gebe vernünftige Fehlermeldung aus ... was soll denn die Frage oben
|

24-04-2008, 10:30
|
Sebix
Newbie
|
|
Registriert seit: Aug 2007
Beiträge: 20
|
|
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.
|

24-04-2008, 12:20
|
PHP-Desaster
PHP Expert
|
|
Registriert seit: Mar 2006
Beiträge: 3.105
|
|
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 ^^
|

24-04-2008, 15:01
|
Sebix
Newbie
|
|
Registriert seit: Aug 2007
Beiträge: 20
|
|
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!
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Thema bewerten |
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|