Seite aufrufen ohne content zu laden?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Karl
User
Beiträge: 252
Registriert: Freitag 29. Juni 2007, 17:49

Hi, ich frag mich gerade ob ich eine Seite aufrufen kann zB bla.blubb/xyz.php?eintrag=abc und diese dann die GET-Parameter erhält und diese verarbeitet aber ich die Verbindung schon abbrechen kann ohne auf die Ausgabe zu warten. Also nur die Seite aufrufen und nach 0.01 Sekunden schon wieder die Verbindung abbrechen.
Geht das?
INFACT
User
Beiträge: 385
Registriert: Freitag 5. Dezember 2008, 16:08

Meinst du:

Code: Alles auswählen

import webbrowser
webbrowser.open("http:\\hello.de")
[b][i]ein kleines game für die die lust haben http://konaminut.mybrute.com[/i][/b]
;-)
Karl
User
Beiträge: 252
Registriert: Freitag 29. Juni 2007, 17:49

Nein, ich meine sowas:

Code: Alles auswählen

import urllib
url = urllib.urlopen('http://bla.blubb/xyz.php?eintrag=abc')
Nur, dass ich nicht so lange warten will, bis das PHP-Script abgearbeitet ist und die Verbindung automatisch beendet wird ;)
jerch
User
Beiträge: 1669
Registriert: Mittwoch 4. März 2009, 14:19

urlopen von urllib2 kennt ein timeout-Parameter. Keine Ahnung ob der auch den Socket dicht macht, oder nur den Leseblock übergeht. Aber so ganz lege artis ist das nicht, was Du da vorhast.
Karl
User
Beiträge: 252
Registriert: Freitag 29. Juni 2007, 17:49

Okay, ich werd's mal probieren, danke.

Naja lege artis ist es schon :p Vielleicht will ich einfach nur ein Script auf localhost aufrufen, was 5 Minuten braucht? ;)

Edit: Klappt wunderbar, mein auf dem localhost liegendes Script ( ;) ) arbeitet wunderbar trotz timout weiter.
Zuletzt geändert von Karl am Donnerstag 19. März 2009, 21:02, insgesamt 1-mal geändert.
jerch
User
Beiträge: 1669
Registriert: Mittwoch 4. März 2009, 14:19

Du solltest noch folgendes bedenken: Wenn der Socket frühzeitig geschlossen wird, dürften die meisten Serverimplementationen hierauf mit einer Art IO-Exception reagieren, ob Deine GETs da schon richtig abgearbeitet sind, sollte zwar so sein, ich würd hier aber sicherheitshalber auf Seiteneffekte testen.
lunar

Mal ganz abgesehen davon, dass lange laufende PHP-Skripte gerne auch von mod_php getötet werden, wenn die php.ini nicht angepasst wurde ...

Im Allgemeinen ist es nicht koscher, wenn ein Request-Handler auf dem Server fünf Minuten lang läuft, und die "empfohlene" Nutzung dieser Web-"API" das Abbrechen des Requests ist ... lang laufende Aufgaben sind nicht Sache des Request-Handlers, sondern gehören in einen Hintergrunddienst. Bei einem einkommenden Request wird der Hintergrunddienst aktiviert, und der Request-Handler kann sofort einen geordneten Response an den Client zurück liefern.
jerch
User
Beiträge: 1669
Registriert: Mittwoch 4. März 2009, 14:19

Also mit 5 min ist da was konzeptionell schief gegangen. Zumindest der Apache ist bemüht, belegte Ressourcen so schnell wie möglich wieder frei zu geben, wenn da jetzt die Verbindung zum Client gekappt wird, greift normalerweise der Exceptionhandler und "räumt" Dein Skript samt Interpreter (je nach Anbindung, cgi od. embedded Interpreter) auf. Ich sprech zumindest für mod_python aus eigener Erfahrung, für Perl via cgi kenne ich das Problem von einem Freund, der Probleme mit spontanen Verbindungsabbrüchen hatte, was ihm mit seinem Transaktionsmodell einiges Kopfzerbrechen gekostet hat.

Und localhost gibts nun wirklich bessere Möglichkeiten, so ein Skript anzustoßen, ansonsten siehe lunars Post.

Und ohne Dein obiges Smily überinterpretieren zu wollen, hier mal ein Zitat aus der Wikipedia. Ist natürlich offtopic ;)
Computersabotage im Sinne des deutschen Strafrecht ist das Stören einer fremden Datenverarbeitungsanlage, die für einen anderen von wesentlicher Bedeutung ist.

Computersabotage ist in Deutschland gemäß § 303b des Strafgesetzbuches (StGB) ein Vergehen, welches mit Freiheitsstrafe bis zu drei Jahren, in besonders schweren Fällen bis zu zehn Jahren, oder Geldstrafe bestraft wird.
Antworten