PHP pfsockopen 网络函数

  • 定义和用法

    pfsockopen - 打开一个持久的网络连接或者Unix套接字连接。
  • 版本支持

    PHP4 PHP5 PHP7
    支持 支持 支持
  • 语法

    pfsockopen ( string $hostname [, int $port = -1 [, int &$errno [, string &$errstr [, float $timeout = ini_get("default_socket_timeout") ]]]] )
    
    这个函数的作用与fsockopen()完全一样的,不同的地方在于当在脚本执行完后,连接一直不会关闭。可以说它是fsockopen()的长连接版本。
  • 参数

    参数 必需的 描述
    对于其参数的信息,请参考fsockopen()的文档。
  • 返回值

    将返回一个文件句柄,之后可以被其他文件类函数调用(例如:fgets()fgetss()fwrite()fclose()还有feof())。如果调用失败,将返回FALSE。
  • 示例

    <?php
    $host = gethostbyaddr($_SERVER['REMOTE_ADDR']);
    
    # working vars
    $host = 'www.example.com';
    $service_uri = '/cgi-bin/processACT';
    $vars ='code=22&act=TEST';
    
    # compose HTTP request header
    $header = "Host: $host\r\n";
    $header .= "User-Agent: PHP Script\r\n";
    $header .= "Content-Type: application/x-www-form-urlencoded\r\n";
    $header .= "Content-Length: ".strlen($vars)."\r\n";
    $header .= "Connection: close\r\n\r\n";
    
    $fp = pfsockopen("ssl://".$host, 443, $errno, $errstr);
    if (!$fp) {
       echo "$errstr ($errno)<br/>\n";
       echo $fp;
    } else {
        fputs($fp, "POST $service_uri  HTTP/1.1\r\n");
        fputs($fp, $header.$vars);
        fwrite($fp, $out);
        while (!feof($fp)) {
            echo fgets($fp, 128);
        }
        fclose($fp);
    }