您现于de位置乃:亚博 > APP学习

亚博 2020-02-17 APP学习 86

app fsockopen

fsockopen — 打开1个网络连接或者1个Unix套接字连接

参数

hostname

如果安装了OpenSSL 那么您也许应该于您de主机名地址前面添加访问协议ssl://或者乃tls:// 从而可以使用基于TCP/IP协议deSSL或者TLSde客户端连接到远程主机.

port

端口号.如果对该参数传1个-1 则表示不使用端口 例如unix://.

errno

如果传入了该参数 holds the system level error number that occurred in the system-level connect() call.

如果errnode返回值为0 而且这个函数de返回值为FALSE 那么这表明该错误发生于套接字连接(connect())调用之前 导致连接失败de原因好的de可能乃初始化套接字de时候发生了错误.

errstr

错误信息将以字符串de信息返回.

timeout

设置连接de时限 单位为秒.

注意:如果您要对建立于套接字基础上de读写操作设置操作时间设置连接时限 请使用stream_set_timeout() fsockopen()de连接时限(timeout)de参数仅仅于套接字连接de时候生效.

返回值

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

示例1

<?app
$fp = fsockopen("www.example.com", 80, $errno, $errstr, 30);
if (!$fp) {
    echo "$errstr ($errno)<br />\n";
} else {
    $out = "GET / HTTP/1.1\r\n";
    $out .= "Host: www.example.com\r\n";
    $out .= "Connection: Close\r\n\r\n";
    fwrite($fp, $out);
    while (!feof($fp)) {
        echo fgets($fp, 128);
    }
    fclose($fp);
}
?>

示例2

主要用于推送微信消息模板

//异步发送
openid = '';
access_token = '';
$redirect_uri = cmf_url('weixin/Index/login');

$data = array(
    "touser"      => $openid,
    "template_id" => "jSx2-LE5ceOzKXof24IRBOoZ6iOmeAlol-r5fBvK_QA",
    "url"         => $redirect_uri,
    "data"        => array(
        "first"    => array("value" => $company_data['company'].'-'.$key),
        "keyword1" => array("value" => $fxmonth),
        "keyword2" => array("value" => $payroll['title']),
    ),
);
$params         = json_encode($data, JSON_UNESCAPED_UNICODE);

$fp = fsockopen('api.weixin.qq.com', 80, $error, $errstr, 1);
$http = "POST /cgi-bin/message/template/send?access_token={$access_token} HTTP/1.1\r\nHost: api.weixin.qq.com\r\nContent-type: application/x-www-form-urlencoded\r\nContent-Length: " . strlen($params) . "\r\nConnection:close\r\n\r\n$params\r\n\r\n";
fwrite($fp, $http);
fclose($fp);

示例3

下面这个例子展示了怎么样于自己de机器上通过UDP套接字连接(端口号13)来检索日期和时间.

<?app
$fp = fsockopen("udp://127.0.0.1", 13, $errno, $errstr);
if (!$fp) {
    echo "ERROR: $errno - $errstr<br />\n";
} else {
    fwrite($fp, "\n");
    echo fread($fp, 26);
    fclose($fp);
}
?>


评论