mirror of
https://github.com/php/doc-zh.git
synced 2026-03-25 23:52:17 +01:00
213 lines
5.6 KiB
XML
213 lines
5.6 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
||
<!-- $Revision$ -->
|
||
<!-- EN-Revision: bad50150f7e06228f48c4461fab52afe08a4d5e4 Maintainer: Szopen Xiao Status: ready -->
|
||
<!-- CREDITS: Jader, mowangjuanzi -->
|
||
<refentry xml:id="context.socket" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" annotations="verify_info:false" role="stream_context_option">
|
||
<refnamediv>
|
||
<refname>套接字上下文选项</refname>
|
||
<refpurpose>套接字上下文选项列表</refpurpose>
|
||
</refnamediv>
|
||
|
||
<refsect1 role="description"><!-- {{{ -->
|
||
&reftitle.description;
|
||
<para>
|
||
套接字上下文选项可用于所有工作在套接字上的封装协议,像
|
||
<literal>tcp</literal>, <literal>http</literal> 和
|
||
<literal>ftp</literal>。
|
||
</para>
|
||
</refsect1><!-- }}} -->
|
||
|
||
<refsect1 role="options"><!-- {{{ -->
|
||
&reftitle.options;
|
||
<para>
|
||
<variablelist>
|
||
<varlistentry xml:id="context.socket.bindto">
|
||
<term><parameter>bindto</parameter></term>
|
||
<listitem>
|
||
<para>
|
||
用户 PHP 访问网络的指定的 IP 地址(IPv4 或 IPv6 其中的一个)和/或 端口号,这个语法是
|
||
<literal>ip:port</literal>。
|
||
设置 IP 或者 port 为 <literal>0</literal> 将会让系统选择 IP 或 port。
|
||
</para>
|
||
<note>
|
||
<para>
|
||
由于 FTP 在正常操作时会创建两个 socket 连接,因此无法使用此选项指定端口号。
|
||
</para>
|
||
</note>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry xml:id="context.socket.backlog">
|
||
<term><parameter>backlog</parameter></term>
|
||
<listitem>
|
||
<para>
|
||
用于限制 socket 监听队列中未完成连接的数量。
|
||
</para>
|
||
<note>
|
||
<para>
|
||
这仅适用于 <function>stream_socket_server</function>。
|
||
</para>
|
||
</note>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry xml:id="context.socket.ipv6_v6only">
|
||
<term><parameter>ipv6_v6only</parameter></term>
|
||
<listitem>
|
||
<para>
|
||
覆盖有关 IPv4 映射到 IPv6 的操作系统默认值。
|
||
</para>
|
||
<note>
|
||
<para>
|
||
在 <literal>[::]</literal> 上存在绑定的时候,当尝试在各自的 Ipv4 地址上监听,这是尤其重要。
|
||
</para>
|
||
<para>
|
||
这仅适用于 <function>stream_socket_server</function>。
|
||
</para>
|
||
</note>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry xml:id="context.socket.so_reuseport">
|
||
<term><parameter>so_reuseport</parameter></term>
|
||
<listitem>
|
||
<para>
|
||
即使来自不同的进程,也能对同一个 ip:port 对进行多个绑定。
|
||
</para>
|
||
<note>
|
||
<para>
|
||
这仅适用于 <function>stream_socket_server</function>。
|
||
</para>
|
||
</note>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry xml:id="context.socket.so_broadcast">
|
||
<term><parameter>so_broadcast</parameter></term>
|
||
<listitem>
|
||
<para>
|
||
允许向广播地址发送数据,从广播地址接收数据。
|
||
</para>
|
||
<note>
|
||
<para>
|
||
这仅适用于 <function>stream_socket_server</function>。
|
||
</para>
|
||
</note>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry xml:id="context.socket.tcp_nodelay">
|
||
<term><parameter>tcp_nodelay</parameter></term>
|
||
<listitem>
|
||
<para>
|
||
设置此选项为 &true; 将相应地设置 <literal>SOL_TCP,NO_DELAY=1</literal>,
|
||
从而禁用 TCP Nagle 算法。
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
</para>
|
||
</refsect1><!-- }}} -->
|
||
|
||
<refsect1 role="changelog"><!-- {{{ -->
|
||
&reftitle.changelog;
|
||
<para>
|
||
<informaltable>
|
||
<tgroup cols="2">
|
||
<thead>
|
||
<row>
|
||
<entry>&Version;</entry>
|
||
<entry>&Description;</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry>7.1.0</entry>
|
||
<entry>
|
||
添加 <parameter>tcp_nodelay</parameter>。
|
||
</entry>
|
||
</row>
|
||
<row>
|
||
<entry>7.0.1</entry>
|
||
<entry>
|
||
添加 <parameter>ipv6_v6only</parameter>。
|
||
</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</informaltable>
|
||
</para>
|
||
</refsect1><!-- }}} -->
|
||
|
||
<refsect1 role="examples"><!-- {{{ -->
|
||
&reftitle.examples;
|
||
<para>
|
||
<example xml:id="context.socket.example-bindto"><!-- {{{ -->
|
||
<title>基础的 <parameter>bindto</parameter> 用法示例</title>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?php
|
||
// 使用 IP '192.168.0.100' 连接到互联网
|
||
$opts = array(
|
||
'socket' => array(
|
||
'bindto' => '192.168.0.100:0',
|
||
),
|
||
);
|
||
|
||
|
||
// 使用 IP '192.168.0.100' 和端口 '7000' 连接到互联网
|
||
$opts = array(
|
||
'socket' => array(
|
||
'bindto' => '192.168.0.100:7000',
|
||
),
|
||
);
|
||
|
||
|
||
// 使用 IPv6 地址 '2001:db8::1' 和端口 '7000' 连接到互联网
|
||
$opts = array(
|
||
'socket' => array(
|
||
'bindto' => '[2001:db8::1]:7000',
|
||
),
|
||
);
|
||
|
||
|
||
// 使用端口 '7000' 连接到互联网
|
||
$opts = array(
|
||
'socket' => array(
|
||
'bindto' => '0:7000',
|
||
),
|
||
);
|
||
|
||
|
||
// 创建上下文...
|
||
$context = stream_context_create($opts);
|
||
|
||
// ...并使用它来读取数据
|
||
echo file_get_contents('http://www.example.com', false, $context);
|
||
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
</example><!-- }}} -->
|
||
</para>
|
||
</refsect1><!-- }}} -->
|
||
|
||
</refentry>
|
||
|
||
<!-- Keep this comment at the end of the file
|
||
Local variables:
|
||
mode: sgml
|
||
sgml-omittag:t
|
||
sgml-shorttag:t
|
||
sgml-minimize-attributes:nil
|
||
sgml-always-quote-attributes:t
|
||
sgml-indent-step:1
|
||
sgml-indent-data:t
|
||
indent-tabs-mode:nil
|
||
sgml-parent-document:nil
|
||
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
|
||
sgml-exposed-tags:nil
|
||
sgml-local-catalogs:nil
|
||
sgml-local-ecat-files:nil
|
||
End:
|
||
vim600: syn=xml fen fdm=syntax fdl=2 si
|
||
vim: et tw=78 syn=sgml
|
||
vi: ts=1 sw=1
|
||
-->
|
||
|