Timeout bei Socketverbindung austricksen

Tach Community,

ich sende mit Hilfe von Sockets grosse
Datenmengen an einen Server auf dessen Konfiguration ich keinen
Zugriff habe.

Mein Script macht einen Socket auf und sendet
mehrere POSTrequests ab. Mein Problem ist, dass wenn die
Datenmenge entsprechend gross ist und der Vorgang zu lange
dauert bricht mein Script ab.

Ich bin mir nicht sicher… aber mir stellen sich
glaub ich 2 Timeout Probleme in den Weg. Zum einen
das von meinem lokalen Server (scriptausführung)
und das auf dem ich einen socket aufmache und wo die POSTs hinlaufen.

Wie umgeht man soetwas komfortabel. Mir fehlt da der Lösungsansatz.

Ein Beispiel ist zum Beispiel ein Newsletter script, welches
an 10000000ende Mailadressen Mails verschicken kann ohne abzubrechen.
Wie kann man soetwas realisieren?

Danke für den DenkAnstoss :smile:

Gruss aus Berlin

PixelKoenig

Hallo,

http://de3.php.net/manual/de/function.fsockopen.php

resource fsockopen ( 
 string $hostname 
 [, int $port = -1 
 [, int &$errno 
 [, string &$errstr 
 [, float $timeout = ini\_get("default\_socket\_timeout")]]]] 
 )

 timeout

 Der Connection-Timeout in Sekunden.

 Hinweis: Wenn Sie einen Timeout für das Lesen oder Schreiben 
 von Daten über den Socket setzen wollen, verwenden Sie 
 stream\_set\_timeout(), da der timeout-Parameter von fsockopen() 
 nur für das reine Konnektieren des Sockets gedacht ist. 

Gruß

Missverstaendnis?
Hi ,

mein Problem ist ja nicht, dass ich keinen timeout --setzen–
kann, sondern dass der server von sich aus sagt, dass die
ausführung des scripts zu lange dauert. (je nach konfig 30-60 sekunden) und dann einen timeout fehler wirft und mein script beendet.

ich glaube nicht, dass ich meinen server zwingen kann die maximale scriptausfuehrungszeit aus der .ini durch meinen gesetzten timeout
zu ersetzen… oder?

oder liege ich jetzt voellig falsch?

gruss

PixelKoenig

timeout

Der Connection-Timeout in Sekunden.

Hinweis: Wenn Sie einen Timeout für das Lesen oder
Schreiben
von Daten über den Socket setzen wollen, verwenden Sie
stream_set_timeout(), da der timeout-Parameter von
fsockopen()
nur für das reine Konnektieren des Sockets gedacht
ist.

Gruß

ich glaube nicht, dass ich meinen server zwingen kann die
maximale scriptausfuehrungszeit aus der .ini durch meinen
gesetzten timeout
zu ersetzen… oder?

wenn er sich zwingen lassen mag, geht das sehr gut mit:
http://php.net/set_time_limit

was aber wie du schon richtig bemerkt hast natuerlich noch nicht heisst, dass die gegenstelle keinen read_timeout wirft. dann musst du paketieren oder schneller senden.