首页 > php函数 > PHP中Socket_Read的问题

PHP中Socket_Read的问题

<?php
error_reporting(E_ALL);
set_time_limit(0);
$runtimes = 100;
for ($i = 0; $i < $runtimes; $i) {
    $str = f_socket("www.baidu.com", "/s?wd=10000" . $i);
    echo "<textarea>" . $str . "</textarea><br>";
}
function f_socket($website, $url) {
    $service_port = getservbyname('www', 'tcp');
    $address = gethostbyname($website);
    $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
    if (false == ($socket_result = socket_connect($socket, $address, $service_port))) {
        echo ("SOCKET_CONNECT_ERROR: " . socket_strerror(socket_last_error($socket)));
    }
    $in = "GET " . $url . " HTTP/1.1rn";
    $in.= "Host: " . $website . "rn";
    $in.= "Connection: closernrn";
    socket_write($socket, $in, strlen($in));
    $start_time = time();
    $str = "";
    do {
        if (false === ($out = socket_read($socket, 8192))) {
            echo ("SOCKET_READ_ERROR: " . socket_strerror(socket_last_error($socket)));
            $str = "";
            break;
        }
        if (time() - $start_time > 1) {
            echo ("SOCKET_READ_ERROR: Timeout!!!");
            $str = "";
            break;
        }
        $str.= $out;
    } while ($out != "");
    socket_close($socket);
    return $str;
}
/*
function f_socket($website, $url) {
    $fp = fsockopen($website, 80, $errno, $errstr, 30);
    if (!$fp) {
    } else {
        $out = "GET " . $url . " HTTP/1.1 ";
        $out.= "Host: " . $website . " ";
        $out.= "Connection: Close ";
        fwrite($fp, $out);
        $str = "";
        $start_time = time();
        while (!feof($fp)) {
            $str.= fread($fp, 8192);
            if (time() - $start_time > 1) {
                $str = "";
                echo "timeout!!!";
                break;
            }
        }
        return $str;
    }
}
*/
?>


本文地址:http://www.phprm.com/function/376f86bac59a3b2d10dc1de348336a9c.html

转载随意,但请附上文章地址:-)

标签:none

发表留言