아래와 같이 default_socket_timeout을 설정해서 외부접속지연을 막을 수 있다.
http://test_host/sleep.php
<?php
define('_SLEEP', 5);
for ($i = 0; $i < _SLEEP; $i++)
{
echo "{$i}\n";
sleep(1);
}
exit(0);
?>
default_socket_timeoue_test.php <= set enough time
<?php
ini_set('default_socket_timeout', 10);
echo "-- S result --\n";
$rFp = @fopen('http://test_host/sleep.php', 'r');
if ($rFp !== false)
{
stream_set_timeout($rFp, 2);
stream_set_blocking($rFp, 0);
$sResult = fread($rFp, 4096);
echo $sResult;
fclose($rFp);
}
echo "-- E result --\n";
exit(0);
?>
$ php default_socket_timeoue_test.php
-- S result --
0
1
2
3
4
-- E result --
$
default_socket_timeoue_test.php <= set NOT enough time
<?php
ini_set('default_socket_timeout', 2);
echo "-- S result --\n";
$rFp = @fopen('http://test_host/sleep.php', 'r');
if ($rFp !== false)
{
stream_set_timeout($rFp, 2);
stream_set_blocking($rFp, 0);
$sResult = fread($rFp, 4096);
echo $sResult;
fclose($rFp);
}
echo "-- E result --\n";
exit(0);
?>
$ php default_socket_timeoue_test.php
-- S result --
-- E result --
$
* 위와 같이 default_socket_timeout 을 설정하면 해당 시간안에 socket data 못받아오면 socket close 시킴
* 참고로 stream_set_timeout()은 cli에서는 안먹힘, 이와 유사하게 set_time_out()또한 cli에서는 안먹힘
'PHP' 카테고리의 다른 글
cli에서 set_time_out() 테스트 (0) | 2012.01.31 |
---|