Benenn dein Skript in nph-... um. Das nph- am Anfang bedeutet sofern ich mich recht erinnere "no process headers" und bedeutet schlicht und einfach, dass der Webserver nicht auf die Beendigung des Skriptes wartet, sondern sofort alles rausschickt, was das Skript ausgiebt. Allerdings musst du am Anfang dann eine Zeile "Content-type: text/html" mit darauffolgender Leerzeile ausgeben. In PHP gibt es übrigens die Funktion flush() um den Ausgabepuffer zu senden - evtl. hilft das. Helge.
-----Original Message----- From: Markus Langner [mailto:mlangner@teleconnect.de] Sent: Wednesday, March 05, 2003 1:50 PM To: suse-programming@suse.com Subject: Problem mit der Funktion sleep()
Hallo Liste,
habe ein kleines Programm gebastelt mit dem man ein Linux-System über eine
Web-Oberfläche Konfigurieren kann (a la Webmin). Die Anbindung wird über
CGI realisiert. Eine Funktion des Programms erlaubt es dem User unter anderem
die IP Adresse des Gerätes zu ändern, was auch super funktioniert. Mein Problem
ist, dass ich dem User vor Änderung der IP mitteilen möchte, dass eine entsprechende
Änderung erfolgt. (Device is setting up IP ...)
Trotzdem ich den HTML Code vor dem Ändern der IP generiere wird er nicht mehr
dargestellt. Die Änderung der IP ist schneller und der Browser verliert somit die
Verbindung zum Server vorzeitig (der Aufruf erfolgt über die Funktion system()).
Habe versucht mit sleep() eine Verzögerung zu erreichen was leider nicht funktioniert. Sicher
habe ich irgend etwas falsch gemacht, nur was? Bin noch Linux-Anfänger und auch
nicht im Besitz großen Erfahrungen mit C, also bitte verzeiht die vielleicht simple Frage.
Der Ablauf:
Anfrage HTML->WebServer->Aufruf Config-Programm->:
...
if ( gen_html_code_ip() == 1)
{
sleep(3);
set_ipaddress(ip);
return 1;
}
...
->WebServer->Browser