Ik maak gebruik van een simpel php script om naar een bepaalde poort te connecten en aldaar informatie op te vragen van deze server.
Dit werkt allemaal prima echter het wil wel eens voorkomen dat de server waar ik heen connect normaal connect maar eenmaal verbonden geheel geen response terug geeft.
(dit is geen fout van het script maar een fout van de server, dit kan ik zelf niet verhelpen)
Dit heeft als gevolg dat mijn script blijft wachten op een reactie en niet afsluit, op zich niet erg ware het niet dat de rest van het script dan ook niet verder loopt.
Nu heb ik gezocht naar een optie om een timeout in te bouwen, dus dat een verbinding na een X aantal idle tijd vanzelf vanuit mijn script wordt verbroken.
Maar hierover kan ik geheel geen informatie vinden of dit wel kan, het lijkt erop dat PHP dit niet ondersteund, klopt dit?
Let wel op dat het niet gaat om een timeout op het maken van de verbinding, dit zit er al in werkt ook normaal. Het gaat er echt om dat als er een verbinding is dat deze dan na een bepaalde idle time automatisch door mijn script wordt verbroken, zodat de rest van het script verder loopt.
Kan iemand me op weg helpen en me een tip geven waar ik gericht op moet zoeken want ik vind zelf via deze forum, google en php.net helaas geen info hierover of dit kan en zo ja hoe dan.
Alvast bedankt voor eventuele reacties.
Dit werkt allemaal prima echter het wil wel eens voorkomen dat de server waar ik heen connect normaal connect maar eenmaal verbonden geheel geen response terug geeft.
(dit is geen fout van het script maar een fout van de server, dit kan ik zelf niet verhelpen)
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| set_time_limit(5); $socket = @socket_create(AF_INET, SOCK_STREAM, SOL_TCP); if ($socket === false) { $restartmessage = "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "<br>\n"; $restart_result = FALSE; } @socket_bind($socket, $ipadres); $result = @socket_connect($socket, $ip, $port); if ($result === false) { $restartmessage = "socket_connect() failed.\nReason: ($result) " . socket_strerror(socket_last_error($socket)) . "<br>\n"; $restart_result = FALSE; } @socket_write($socket, $in, strlen($in)); while ($out = @socket_read($socket, 2048)) { $restartmessage .= $out; //echo "out = $out<br>\n"; } if (empty($restart_result)) { $restart_result = TRUE; } $returnmessage = "$restart_result<>$restartmessage"; @socket_close($socket); |
Dit heeft als gevolg dat mijn script blijft wachten op een reactie en niet afsluit, op zich niet erg ware het niet dat de rest van het script dan ook niet verder loopt.
Nu heb ik gezocht naar een optie om een timeout in te bouwen, dus dat een verbinding na een X aantal idle tijd vanzelf vanuit mijn script wordt verbroken.
Maar hierover kan ik geheel geen informatie vinden of dit wel kan, het lijkt erop dat PHP dit niet ondersteund, klopt dit?
Let wel op dat het niet gaat om een timeout op het maken van de verbinding, dit zit er al in werkt ook normaal. Het gaat er echt om dat als er een verbinding is dat deze dan na een bepaalde idle time automatisch door mijn script wordt verbroken, zodat de rest van het script verder loopt.
Kan iemand me op weg helpen en me een tip geven waar ik gericht op moet zoeken want ik vind zelf via deze forum, google en php.net helaas geen info hierover of dit kan en zo ja hoe dan.
Alvast bedankt voor eventuele reacties.