ID: 21656 Comment by: [EMAIL PROTECTED] Reported By: [EMAIL PROTECTED] Status: Feedback Bug Type: Sockets related Operating System: Linux (Slackware) PHP Version: 4.3.0 New Comment:
Thanks, it goes better... but it is still not perfect. I can (nearly) reproduce the behavior with port 25 of any of [205.158.62.23], [205.158.62.25], [205.158.62.27], [205.158.62.41] while waiting fo smtp greetings after $fp = fsockopen returns a valid $fp $buffer = fgets ($fp); $tstatus = stream_get_meta_data ($fp); $tstatus["eof"] evaluates to TRUE I then try to fclose($fp) but the script hangs there (cf. supra) Previous Comments: ------------------------------------------------------------------------ [2003-01-15 17:56:40] [EMAIL PROTECTED] Please try using this CVS snapshot: http://snaps.php.net/php4-STABLE-latest.tar.gz For Windows: http://snaps.php.net/win32/php4-win32-STABLE-latest.zip There was a problem with the errstr parameter to fsockopen that has been fixed in the STABLE snapshots. Please try one of those and report back here. Also, please read the docs for stream_get_meta_data() and make sure that you understand the difference between the eof property listed there and the return value of the feof() function. ------------------------------------------------------------------------ [2003-01-15 17:45:48] [EMAIL PROTECTED] I am running PHP 4.3, RedHat Linux 7.3, Apache-1.3.27-2 and have still the problem : 1-$fp = fsockopen ($tiphost[$i],25,&$errno,&$errstr,&$TimeOut); 2-$tstatus = stream_get_meta_data ($fp); 3-if ($tstatus["eof"]) { 4- $output = '114 Connection unexpectedly closed'; 5-} 6-$err = fclose ($fp); At line 6 it goes (sometimes) wrong, I guess for the same reason as described here and I get Apache PIDs running for days now... I tried set_time_limit () but as fclose() is "out" of PHP (I think) it does not make the job :-( /server-status gives for example : M CPU SS Req K 34.48 74295 280513 which means the server child is in Keepalive mode, used 34.48 secs of CPU (stalled), not working for 74295 secs (growing), and have been working for 280513 secs (stalled) ------------------------------------------------------------------------ [2003-01-15 08:02:46] [EMAIL PROTECTED] Not enough information was provided for us to be able to handle this bug. Please re-read the instructions at http://bugs.php.net/how-to-report.php If you can provide more information, feel free to add it to this bug and change the status back to "Open". Thank you for your interest in PHP. ------------------------------------------------------------------------ [2003-01-15 07:31:58] [EMAIL PROTECTED] Hi, I've made a script to connect using fsockopen() (not pfsockopen()), and check the timeout into while. If the connection got a time out, I close the socket and restart the request again. The problem is that when I got some network problem that made the connection to be lost, the PHP script simple doesn't close this socket with fclose() and when I open the socket again, I can't send or receive any data. The script is running at shell, and is fetching many web pages to insert into a mysql database. All works fine, till I got any network problem. I've searched all the documentation and bug reports and there's nothing talking about the fclose() to not real close the socket. There's any other way to really force the socket to be closed and oppened again in the same script? Thanks in advice. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=21656&edit=1