# php_manual

id: session_start
type: function
doc:
<comment>Description:</comment>
  启动新会话或者重用现有会话
  
  <strong>session_start()</strong> 会创建新会话或者重用现有会话。 如果通过 GET 或者 POST 方式，或者使用 cookie 提交了
  会话 ID， 则会重用现有会话。
  
  当会话自动开始或者通过 <strong>session_start()</strong> 手动开始的时候， PHP 内部会调用会话处理程序的 open 和 read
  回调函数。 会话处理程序可能是 PHP 默认的， 也可能是扩展提供的（SQLite 或者 Memcached 扩展）， 也可
  能是通过 <strong>session_set_save_handler()</strong> 设定的用户自定义会话处理程序。 通过 read 回调函数返回的现有会
  话数据（使用特殊的序列化格式存储）， PHP 会自动反序列化数据并且填充 $_SESSION 超级全局变量。
  
  要想使用命名会话，请在调用 <strong>session_start()</strong> 函数 之前调用 <strong>session_name()</strong> 函数。
  
  如果启用了 session.use_trans_sid 选项， <strong>session_start()</strong> 函数会注册一个内部输出处理程序， 该输出处
  理程序完成 URL 重写的工作。
  
  如果用户联合使用 <strong>ob_start()</strong>  和 <return>ob_gzhandler</return> 函数， 那么函数的调用顺序会影响输出结果。 例如，必须
  在开始会话之前调用 <return>ob_gzhandler</return> 函数完成注册。

<comment>Param:</comment>
  <info>array</info>  <strong>$options</strong>  此参数是一个关联数组，如果提供，那么会用其中的项目覆盖 会话配置指示 中的配置项。
                   此数组中的键无需包含 <return>session.</return> 前缀。
                   
                   除了常规的会话配置指示项， 还可以在此数组中包含 <return>read_and_close</return> 选项。如果将此选项
                   的值设置为 <info>true</info>， 那么会话文件会在读取完毕之后马上关闭， 因此，可以在会话数据没有
                   变动的时候，避免不必要的文件锁。

<comment>Return:</comment>
  <info>bool</info>  成功开始会话返回 <info>true</info> ，反之返回 <info>false</info>

<comment>See Also:</comment>
   * $_SESSION
   * session.auto_start
     配置指示
    
   * <strong>session_id()</strong>


id: session_status
type: function
doc:
<comment>Description:</comment>
  返回当前会话状态
  
  <strong>session_status()</strong> 被用于返回当前会话状态。

<comment>Return:</comment>
  <info>int</info>  <info>PHP_SESSION_DISABLED</info> 会话是被禁用的。<info>PHP_SESSION_NONE</info> 会话是启用的，但不存在当前会话。
       <info>PHP_SESSION_ACTIVE</info> 会话是启用的，而且存在当前会话。
       
       <info>PHP_SESSION_DISABLED</info> 会话是被禁用的。
       
       <info>PHP_SESSION_NONE</info> 会话是启用的，但不存在当前会话。
       
       <info>PHP_SESSION_ACTIVE</info> 会话是启用的，而且存在当前会话。

<comment>See Also:</comment>
   * <strong>session_start()</strong>


id: session_unset
type: function
doc:
<comment>Description:</comment>
  释放所有的会话变量
  
  <strong>session_unset()</strong> 会释放当前会话注册的所有会话变量。

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。


id: session_write_close
type: function
doc:
<comment>Description:</comment>
  Write session data and end session
  
  End the current session and store session data.
  
  Session data is usually stored after your script terminated without the need to call
  <strong>session_write_close()</strong>, but as session data is locked to prevent concurrent writes only one script
  may operate on a session at any time. When using framesets together with sessions you will
  experience the frames loading one by one due to this locking. You can reduce the time needed to
  load all the frames by ending the session as soon as all changes to session variables are done.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * 
     The <strong>session_register_shutdown()</strong>
    


id: set_error_handler
type: function
doc:
<comment>Description:</comment>
  设置用户自定义的错误处理函数
  
  设置用户的函数 (<strong>$callback</strong>) 来处理脚本中出现的错误。
  
  本函数可用于在运行时定义自定义错误处理程序，例如，在应用程序中发生严重错误，或者在特定条件下触发了
  错误（使用 <strong>trigger_error()</strong>），应用程序需要执行文件/数据清理。
  
  重要的是要记住 <strong>$error_levels</strong> 里指定的错误类型都会绕过 PHP 标准错误处理程序， 除非回调函数返回了
  <info>false</info>。 <strong>error_reporting()</strong> 设置将不会起到作用而继续会调用错误处理函数 —— 不过仍然可以获取
  error_reporting 的当前值，并做适当处理。
  
  同时注意，处理程序有责任在必要时使用 <strong>exit()</strong> 停止脚本执行。 如果错误处理程序返回了，脚本将会在发生
  错误的后一行继续执行。
  
  以下级别的错误不能由用户定义的函数来处理，独立于发生错误的地方： <info>E_ERROR</info>、 <info>E_PARSE</info>、
  <info>E_CORE_ERROR</info>、 <info>E_CORE_WARNING</info>、 <info>E_COMPILE_ERROR</info>、 <info>E_COMPILE_WARNING</info>，和在 调用 <strong>set_error_handler()</strong>
  函数所在文件中产生的大多数 <info>E_STRICT</info>。
  
  如果错误发生在脚本执行之前（比如文件上传时），将不会 调用自定义的错误处理程序因为它尚未在那时注
  册。

<comment>Param:</comment>
  <info>callable|null</info>  <strong>$callback</strong>      如果传递 <info>null</info>，则处理程序重置为默认状态。否则，处理程序是具有以下签
                                名的回调。
                                
                                
                                <info>bool</info>handler<info>int</info><strong>$errno</strong><info>string</info><strong>$errstr</strong><info>string</info><strong>$errfile</strong><info>int</info><strong>$errline</strong><info>array</info><strong>$errcontext</strong><strong>$errno</strong>
                                第一个参数 <strong>$errno</strong>，将会以 int 形式传递错误的级别。 <strong>$errstr</strong> 第二个参
                                数 <strong>$errstr</strong>，将会以 string 形式传递错误的信息。 <strong>$errfile</strong> 如果回调接受
                                第三个参数，<strong>$errfile</strong>，将会以 string 形式传递错误的文件名。 <strong>$errline</strong>
                                如果回调接受第四个参数，<strong>$errline</strong>，将会以 int 形式传递错误发生的行
                                号。 <strong>$errcontext</strong> 如果回调接受第五个参数，<strong>$errcontext</strong> 将会传递数组，
                                该数组指向错误发生时活动符号表。也就是说，<strong>$errcontext</strong> 会包含错误触发
                                处作用域内所有变量的数组。用户的错误处理程序不应该修改错误上下文
                                （context）。  此参数自 PHP 7.2.0 后弃用并自 PHP 8.0.0 移除。如果函
                                数没有为该参数定义默认值，那么在调用时会出现“too few arguments”的错
                                误。
                                
                                第一个参数 <strong>$errno</strong>，将会以 int 形式传递错误的级别。
                                
                                第二个参数 <strong>$errstr</strong>，将会以 string 形式传递错误的信息。
                                
                                如果回调接受第三个参数，<strong>$errfile</strong>，将会以 string 形式传递错误的文件
                                名。
                                
                                如果回调接受第四个参数，<strong>$errline</strong>，将会以 int 形式传递错误发生的行
                                号。
                                
                                如果回调接受第五个参数，<strong>$errcontext</strong> 将会传递数组，该数组指向错误发生
                                时活动符号表。也就是说，<strong>$errcontext</strong> 会包含错误触发处作用域内所有变量
                                的数组。用户的错误处理程序不应该修改错误上下文（context）。
                                
                                此参数自 PHP 7.2.0 后弃用并自 PHP 8.0.0 移除。如果函数没有为该参数定
                                义默认值，那么在调用时会出现“too few arguments”的错误。
                                
                                如果函数返回 <info>false</info>，标准错误处理处理程序将会继续调用。
  <info>int</info>            <strong>$errno</strong>         第一个参数 <strong>$errno</strong>，将会以 int 形式传递错误的级别。
  <info>string</info>         <strong>$errstr</strong>        第二个参数 <strong>$errstr</strong>，将会以 string 形式传递错误的信息。
  <info>string</info>         <strong>$errfile</strong>       如果回调接受第三个参数，<strong>$errfile</strong>，将会以 string 形式传递错误的文件
                                名。
  <info>int</info>            <strong>$errline</strong>       如果回调接受第四个参数，<strong>$errline</strong>，将会以 int 形式传递错误发生的行
                                号。
  <info>array</info>          <strong>$errcontext</strong>    如果回调接受第五个参数，<strong>$errcontext</strong> 将会传递数组，该数组指向错误发生
                                时活动符号表。也就是说，<strong>$errcontext</strong> 会包含错误触发处作用域内所有变量
                                的数组。用户的错误处理程序不应该修改错误上下文（context）。
                                
                                此参数自 PHP 7.2.0 后弃用并自 PHP 8.0.0 移除。如果函数没有为该参数定
                                义默认值，那么在调用时会出现“too few arguments”的错误。
  <info>int</info>            <strong>$error_levels</strong>  就像 error_reporting 的 ini 设置能够控制错误的显示一样，此参数能够用
                                于屏蔽 <strong>$callback</strong> 的触发。如果没有该掩码，无论 error_reporting 是如何
                                设置的，<strong>$callback</strong> 都会在每个错误发生时被调用。

<comment>Return:</comment>
  <info>callable|null</info>  如果之前定义的错误处理程序（如果有）。如果是内置的错误处理程序，则返回 <info>null</info>。如果之
                 前的错误处理程序是一个类的方法，此函数会返回带类和方法名的索引数组。

<comment>See Also:</comment>
   * <class>ErrorException</class>
   * <strong>error_reporting()</strong>
   * <strong>restore_error_handler()</strong>
   * <strong>trigger_error()</strong>
   * error level constants


id: set_exception_handler
type: function
doc:
<comment>Description:</comment>
  设置用户自定义的异常处理函数
    
  
  设置默认的异常处理程序，用于没有用 try/catch 块来捕获的异常。 在 <strong>$callback</strong> 调用后异常会中止。

<comment>Param:</comment>
  <info>callable|null</info>  <strong>$callback</strong>  当一个未捕获的异常发生时所调用的函数。该处理函数需要接受一个参数，该参数
                            是抛出的 <class>Throwable</class> 对象。<class>Error</class> 和 <class>Exception</class> 都实现了 <class>Throwable</class> 接口。这
                            是处理程序签名：
                            
                            <info>void</info>handler<info>Throwable</info><strong>$ex</strong>
                            
                            也可以传递 <info>null</info> 值用于重置异常处理函数为默认值。

<comment>Return:</comment>
  <info>callable|null</info>  返回之前定义的异常处理程序，或者在错误时返回 <info>null</info>。如果之前没有定义错误处理程序，也
                 会返回 <info>null</info>。

<comment>See Also:</comment>
   * <strong>restore_exception_handler()</strong>
   * <strong>restore_error_handler()</strong>
   * <strong>error_reporting()</strong>
   * 异常


id: set_file_buffer
type: function
doc:
<comment>Description:</comment>
  stream_set_write_buffer 的别名
  
  此函数是该函数的别名：<strong>stream_set_write_buffer()</strong>。


id: set_include_path
type: function
doc:
<comment>Description:</comment>
  设置 include_path 配置选项
  
  为当前脚本设置 include_path 运行时的配置选项。

<comment>Param:</comment>
  <info>string</info>  <strong>$include_path</strong>  include_path 新的值。

<comment>Return:</comment>
  <info>string|false</info>  成功时返回旧的 include_path 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>ini_set()</strong>
   * <strong>get_include_path()</strong>
   * <strong>restore_include_path()</strong>
   * <strong>include()</strong>


id: set_time_limit
type: function
doc:
<comment>Description:</comment>
  设置脚本最大执行时间
  
  设置允许脚本运行的时间，单位为秒。如果超过了此设置，脚本返回一个致命的错误。默认值为30秒，或者是在
  php.ini的<return>max_execution_time</return>被定义的值，如果此值存在。
  
  当此函数被调用时，<strong>set_time_limit()</strong>会从零开始重新启动超时计数器。换句话说，如果超时默认是30秒，在脚
  本运行了25秒时调用 <return>set_time_limit(20)</return>，那么，脚本在超时之前可运行总时间为45秒。

<comment>Param:</comment>
  <info>int</info>  <strong>$seconds</strong>  最大的执行时间，单位为秒。如果设置为0（零），没有时间方面的限制。

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>，失败时返回  <info>false</info> 。

<comment>See Also:</comment>
   * max_execution_time
   * max_input_time


id: setcookie
type: function
doc:
<comment>Description:</comment>
  发送 Cookie
  
  自 PHP 7.3.0 起可用的替代签名（不支持命名参数）：
  
  <strong>setcookie()</strong> 定义了 Cookie，会和剩下的消息头一起发送给客户端。和其他消息头一样，必须在脚本产生任意
  输出之前发送 Cookie（由于协议的限制）。请在产生任何输出之前（包括 <return>\<html&gt;</return> 和 <return>\<head&gt;</return> 或者空格）调用本函数。
  
  一旦设置 Cookie 后，下次打开页面时可以使用 $_COOKIE 读取。Cookie 值同样也存在于 $_REQUEST。

<comment>Param:</comment>
  <info>string</info>  <strong>$name</strong>                Cookie 名称。
  <info>string</info>  <strong>$value</strong>               Cookie 值。这个值储存于用户的电脑里，请勿储存敏感信息。比如 <strong>$name</strong> 是
                               <return>'cookiename'</return>，可通过 $_COOKIE['cookiename'] 获取它的值。
  <info>int</info>     <strong>$expires_or_options</strong>  Cookie 的过期时间。这是 Unix 时间戳，即纪元以来的秒数。一种设置此值的
                               方式是将 cookie 过期前的秒数与调用 <strong>time()</strong> 的结果相加。例如，
                               <return>time()+60*60*24*30</return> 就是设置 Cookie 30 天后过期。还有一种选择就是使用
                               <strong>mktime()</strong> 函数。如果设置为 <return>0</return> 或者忽略，Cookie 会在会话结束时过期（关掉
                               浏览器时）。
                               
                                可能会注意到，<strong>$expires_or_options</strong> 使用 Unix 时间戳而非 <return>Wdy,
                               DD-Mon-YYYY HH:MM:SS GMT</return> 这样的日期格式，是因为 PHP 内部作了转换。
                               
                               可能会注意到，<strong>$expires_or_options</strong> 使用 Unix 时间戳而非 <return>Wdy,
                               DD-Mon-YYYY HH:MM:SS GMT</return> 这样的日期格式，是因为 PHP 内部作了转换。
  <info>string</info>  <strong>$path</strong>                Cookie 有效的服务器路径。设置成 <return>'/'</return> 时，Cookie 对整个域名 <strong>$domain</strong> 有
                               效。如果设置成 <return>'/foo/'</return>，Cookie 仅仅对 <strong>$domain</strong> 中 <return>/foo/</return> 目录及其子目录
                               有效（比如 <return>/foo/bar/</return>）。默认值是设置 Cookie 时的当前目录。
  <info>string</info>  <strong>$domain</strong>              Cookie 的有效域名/子域名。设置成子域名（例如 <return>'www.example.com'</return>），会
                               使 Cookie 对这个子域名和它的三级域名有效（例如 w2.www.example.com）。
                               要让 Cookie 对整个域名有效（包括它的全部子域名），只要设置成域名就可
                               以了（这个例子里是 <return>'example.com'</return>）。
                               
                               旧版浏览器仍然在使用废弃的 RFC 2109，需要一个前置的点 <return>.</return> 来匹配所有子
                               域名。
  <info>bool</info>    <strong>$secure</strong>              设置这个 Cookie 是否仅仅通过安全的 HTTPS 连接传给客户端。设置成 <info>true</info>
                               时，只有安全连接存在时才会设置 Cookie。如果是在服务器端处理这个需求，
                               程序员需要仅仅在安全连接上发送此类 Cookie（通过 $_SERVER["HTTPS"] 判
                               断）。
  <info>bool</info>    <strong>$httponly</strong>            设置成 <info>true</info>，Cookie 仅可通过 HTTP 协议访问。这意思就是 Cookie 无法通
                               过类似 JavaScript 这样的脚本语言访问。要有效减少 XSS 攻击时的身份窃取
                               行为，可建议用此设置（虽然不是所有浏览器都支持），不过这个说法经常有
                               争议。 <info>true</info> 或 <info>false</info>
  <info>array</info>   <strong>$options</strong>             关联 <info>array</info>，可能会存在以下键 <return>expires</return>、<return>path</return>、<return>domain</return>、<return>secure</return>、<return>httponly</return>
                               和 <return>samesite</return>。如果存在其它的键，会生成 <info>E_WARNING</info> 级别的错误。这些值的
                               含义跟同名参数的描述相同。<return>samesite</return> 元素的值应该是 <return>None</return>、<return>Lax</return> 或
                               <return>Strict</return>。如果没有指定任何允许的选项，它们的默认值与显式参数的默认值相
                               同。如果省略 <return>samesite</return> 元素，则不设置 SameSite cookie 属性。

<comment>Return:</comment>
  <info>bool</info>  如果在调用本函数以前就产生了输出，<strong>setcookie()</strong> 会失败并返回 <info>false</info>。如果 <strong>setcookie()</strong> 成功运
        行，返回 <info>true</info>。当然，它的意思并非用户是否已接受 Cookie。

<comment>See Also:</comment>
   * <strong>header()</strong>
   * <strong>setrawcookie()</strong>
   * Cookie 章节
   * RFC 6265
   * RFC 2109


id: setlocale
type: function
doc:
<comment>Description:</comment>
  设置区域信息
  
  替代签名（不支持命名参数）：
  
  设置区域信息。
  
  区域信息是按进程维护的，而不是线程。如果在多线程服务器 API 上运行 PHP，区域设置可能在脚本运行时突
  然变化，尽管脚本本身并没有调用 <strong>setlocale()</strong>。这是因为其它脚本在同一时刻的同一进程的不同线程中运行，
  使用 <strong>setlocale()</strong> 改变了进程级别的区域。在 Windows 上，自 PHP 7.0.5 起，每个线程都维护自己的区域信
  息。

<comment>Param:</comment>
  <info>int</info>     <strong>$category</strong>      <strong>$category</strong> 命名常量指定的受区域设置的功能类别: <info>LC_ALL</info> 所有的设置 <info>LC_COLLATE</info>
                         字符串比较, 详见 <strong>strcoll()</strong> <info>LC_CTYPE</info> 字符串的分类与转换, 参见例子
                         <strong>ctype_alpha()</strong> <info>LC_MONETARY</info> 等同 <strong>localeconv()</strong> <info>LC_NUMERIC</info> 对于小数点的分隔（另
                         请参见 <strong>localeconv()</strong>） <info>LC_TIME</info> 时间与格式 <strong>strftime()</strong> <info>LC_MESSAGES</info> 系统响应
                         （如果 PHP 使用 <return>libintl</return> 编译）
                         
                         <info>LC_ALL</info> 所有的设置
                         
                         <info>LC_COLLATE</info> 字符串比较, 详见 <strong>strcoll()</strong>
                         
                         <info>LC_CTYPE</info> 字符串的分类与转换, 参见例子 <strong>ctype_alpha()</strong>
                         
                         <info>LC_MONETARY</info> 等同 <strong>localeconv()</strong>
                         
                         <info>LC_NUMERIC</info> 对于小数点的分隔（另请参见 <strong>localeconv()</strong>）
                         
                         <info>LC_TIME</info> 时间与格式 <strong>strftime()</strong>
                         
                         <info>LC_MESSAGES</info> 系统响应（如果 PHP 使用 <return>libintl</return> 编译）
  <info>string</info>  <strong>$locales</strong>       如果 <strong>$locales</strong> 是空字符串 <return>""</return>，则区域名将从跟上述类别同名的环境变量的值或
                         “LANG”中设置。
                         
                         如果 <strong>$locales</strong> 是 <return>"0"</return>，则区域设置不受影响，仅返回当前设置。
                         
                         如果 <strong>$locales</strong> 后跟附加参数，则每个参数都会尝试设置为新的区域，直至成功。对
                         于以下情况非常有用：不同的系统已知的区域名称不同；为可能无效的区域提供后
                         备。
  <info>string</info>  <strong>$rest</strong>          可选的字符串参数，尝试作为区域设置，直至成功。
  <info>array</info>   <strong>$locale_array</strong>  尝试将数组中的每个元素设置为新的区域，直至成功。对于以下情况非常有用：不同
                         的系统已知的区域名称不同；为可能无效的区域提供后备。

<comment>Return:</comment>
  <info>string|false</info>  返回新的当前区域，如果区域功能没有在当前平台实现、指定区域不存在或类别名无效时返回
                <info>false</info>。
                
                无效的类别名也会导致警告消息。类别/区域名可以在 RFC 1766 和 ISO 639 中找到。不同的系
                统有不同的区域命名方案。
                
                <strong>setlocale()</strong> 的返回值依赖运行 PHP 的系统。它准确返回系统 <return>setlocale</return> 函数返回的内容。


id: setrawcookie
type: function
doc:
<comment>Description:</comment>
  发送未经 URL 编码的 cookie
  
  自 PHP 7.3.0 起可用的替代签名（不支持命名参数）：
  
  <strong>setrawcookie()</strong> 和 <strong>setcookie()</strong> 非常相似，唯一不同之处是发送到浏览器的 cookie 值没有自动经过 URL 编
  码（urlencode）。

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>setcookie()</strong>


id: settype
type: function
doc:
<comment>Description:</comment>
  设置变量的类型
  
  将变量 <strong>$var</strong> 的类型设置成 <strong>$type</strong>。

<comment>Param:</comment>
  <info>mixed</info>   <strong>$var</strong>   要转换的变量。
  <info>string</info>  <strong>$type</strong>  <strong>$type</strong> 的可能值为：  “boolean”或“bool”  “integer”或“int”  “float”或“double”
                 "string"  "array"  "object"  “null”
                 
                 “boolean”或“bool”
                 
                 “integer”或“int”
                 
                 “float”或“double”
                 
                 "string"
                 
                 "array"
                 
                 "object"
                 
                 “null”

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>gettype()</strong>
   * 类型转换
   * 类型戏法


id: sha1
type: function
doc:
<comment>Description:</comment>
  计算字符串的 sha1 散列值
  
  使用 美国安全散列算法 1 计算字符串的 sha1 散列值。

<comment>Param:</comment>
  <info>string</info>  <strong>$string</strong>  输入字符串。
  <info>bool</info>    <strong>$binary</strong>  如果可选的 <strong>$binary</strong> 参数被设置为 <info>true</info>， 那么 sha1 摘要将以 20 字符长度的原始二进制
                   格式返回， 否则返回值为 40 字符长度的十六进制数。

<comment>Return:</comment>
  <info>string</info>  以字符串形式返回 sha1 散列值。

<comment>See Also:</comment>
   * <strong>sha1_file()</strong>
   * <strong>crc32()</strong>
   * <strong>md5()</strong>
   * <strong>hash()</strong>
   * <strong>crypt()</strong>
   * <strong>password_hash()</strong>


id: sha1_file
type: function
doc:
<comment>Description:</comment>
  计算文件的 sha1 散列值
  
  使用 美国安全散列算法 1 计算 <strong>$filename</strong> 指定的文件的 sha1 散列值，并返回该散列值。 该散列值为 40 字
  符长度的十六进制数。

<comment>Param:</comment>
  <info>string</info>  <strong>$filename</strong>  要散列的文件的文件名。
  <info>bool</info>    <strong>$binary</strong>    为 <info>true</info> 时，返回 20 字符长度的原始二进制格式摘要。

<comment>Return:</comment>
  <info>string|false</info>  成功返回字符串，否则返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>sha1()</strong>
   * <strong>md5_file()</strong>
   * <strong>crc32()</strong>


id: shell_exec
type: function
doc:
<comment>Description:</comment>
  通过 shell 执行命令并将完整的输出以字符串的方式返回
  
  本函数同执行运算符。
  
  在 Windows 上，底层管道以文本模式打开，这可能导致函数无法进行二进制输出。考虑使用 <strong>popen()</strong> 避免这种
  情况。

<comment>Param:</comment>
  <info>string</info>  <strong>$command</strong>  要执行的命令。

<comment>Return:</comment>
  <info>string|false|null</info>  <info>string</info> 包含已执行命令的输出，如果无法建立管道，则为 <info>false</info>，如果发生错误或者命令
                     不产生输出则为 <info>null</info>
                     
                     当进程执行过程中发生错误，或者进程不产生输出的情况下，都会返回 <info>null</info>。使用本函数
                     无法检测执行是否成功。当需要访问程序退出代码时，应使用 <strong>exec()</strong>。

<comment>See Also:</comment>
   * <strong>exec()</strong>
   * <strong>escapeshellcmd()</strong>


id: shm_attach
type: function
doc:
<comment>Description:</comment>
  Creates or open a shared memory segment
  
  <strong>shm_attach()</strong> returns an id that can be used to access the System V shared memory with the given
  <strong>$key</strong>, the first call creates the shared memory segment with  <strong>$size</strong> and the optional perm-bits
  <strong>$permissions</strong>.
  
  A second call to <strong>shm_attach()</strong> for the same <strong>$key</strong> will return a different <class>SysvSharedMemory</class> instance,
  but both instances access the same underlying shared memory. <strong>$size</strong> and <strong>$permissions</strong> will be
  ignored.

<comment>Param:</comment>
  <info>int</info>       <strong>$key</strong>          A numeric shared memory segment ID
  <info>int|null</info>  <strong>$size</strong>         The memory size. If not provided, default to the <return>sysvshm.init_mem</return> in the
                          php.ini, otherwise 10000 bytes.
  <info>int</info>       <strong>$permissions</strong>  The optional permission bits. Default to 0666.

<comment>Return:</comment>
  <info>SysvSharedMemory|false</info>  Returns a <class>SysvSharedMemory</class> instance on success,  或者在失败时返回 <info>false</info>.

<comment>See Also:</comment>
   * <strong>shm_detach()</strong>
   * <strong>ftok()</strong>


id: shm_detach
type: function
doc:
<comment>Description:</comment>
  Disconnects from shared memory segment
  
  <strong>shm_detach()</strong> disconnects from the shared memory given by the <strong>$shm</strong> created by <strong>shm_attach()</strong>.
  Remember, that shared memory still exist in the Unix system and the data is still present.

<comment>Param:</comment>
  <info>SysvSharedMemory</info>  <strong>$shm</strong>  A shared memory segment obtained from <strong>shm_attach()</strong>.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>shm_attach()</strong>
   * <strong>shm_remove()</strong>
   * <strong>shm_remove_var()</strong>


id: shm_get_var
type: function
doc:
<comment>Description:</comment>
  Returns a variable from shared memory
  
  <strong>shm_get_var()</strong> returns the variable with a given <strong>$key</strong>, in the given shared memory segment. The
  variable is still present in the shared memory.

<comment>Param:</comment>
  <info>SysvSharedMemory</info>  <strong>$shm</strong>  A shared memory segment obtained from <strong>shm_attach()</strong>.
  <info>int</info>               <strong>$key</strong>  The variable key.

<comment>Return:</comment>
  <info>mixed</info>  Returns the variable with the given key.

<comment>See Also:</comment>
   * <strong>shm_has_var()</strong>
   * <strong>shm_put_var()</strong>


id: shm_has_var
type: function
doc:
<comment>Description:</comment>
  Check whether a specific entry exists
  
  Checks whether a specific key exists inside a shared memory segment.

<comment>Param:</comment>
  <info>SysvSharedMemory</info>  <strong>$shm</strong>  A shared memory segment obtained from <strong>shm_attach()</strong>.
  <info>int</info>               <strong>$key</strong>  The variable key.

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info> if the entry exists, otherwise <info>false</info>

<comment>See Also:</comment>
   * <strong>shm_get_var()</strong>
   * <strong>shm_put_var()</strong>


id: shm_put_var
type: function
doc:
<comment>Description:</comment>
  Inserts or updates a variable in shared memory
  
  <strong>shm_put_var()</strong> inserts or updates the <strong>$value</strong> with the given <strong>$key</strong>.
  
  Warnings (<info>E_WARNING</info> level) will be issued if <strong>$shm</strong> is not a valid SysV shared memory index or if
  there was not enough shared memory remaining to complete your request.

<comment>Param:</comment>
  <info>SysvSharedMemory</info>  <strong>$shm</strong>    A shared memory segment obtained from <strong>shm_attach()</strong>.
  <info>int</info>               <strong>$key</strong>    The variable key.
  <info>mixed</info>             <strong>$value</strong>  The variable. All variable types that <strong>serialize()</strong> supports may be used:
                            generally this means all types except for resources and some internal
                            objects that cannot be serialized.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>shm_get_var()</strong>
   * <strong>shm_has_var()</strong>


id: shm_remove
type: function
doc:
<comment>Description:</comment>
  Removes shared memory from Unix systems
  
  <strong>shm_remove()</strong> removes the shared memory <strong>$shm</strong>. All data will be destroyed.

<comment>Param:</comment>
  <info>SysvSharedMemory</info>  <strong>$shm</strong>  A shared memory segment obtained from <strong>shm_attach()</strong>.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>shm_remove_var()</strong>


id: shm_remove_var
type: function
doc:
<comment>Description:</comment>
  Removes a variable from shared memory
    
  
  Removes a variable with a given <strong>$key</strong> and frees the occupied memory.

<comment>Param:</comment>
  <info>SysvSharedMemory</info>  <strong>$shm</strong>  A shared memory segment obtained from <strong>shm_attach()</strong>.
  <info>int</info>               <strong>$key</strong>  The variable key.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>shm_remove()</strong>


id: shmop_close
type: function
doc:
<comment>Description:</comment>
  Close shared memory block
  
  此函数无效。在 PHP 8.0.0 之前，用于关闭资源。
  
  <strong>shmop_close()</strong> is used to close a shared memory block.

<comment>Param:</comment>
  <info>Shmop</info>  <strong>$shmop</strong>  The shared memory block resource created by  <strong>shmop_open()</strong>

<comment>Return:</comment>
  <info>void</info>  没有返回值。

<comment>See Also:</comment>
   * <strong>shmop_open()</strong>


id: shmop_delete
type: function
doc:
<comment>Description:</comment>
  Delete shared memory block
  
  <strong>shmop_delete()</strong> is used to delete a shared memory block.

<comment>Param:</comment>
  <info>Shmop</info>  <strong>$shmop</strong>  The shared memory block resource created by  <strong>shmop_open()</strong>

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。


id: shmop_open
type: function
doc:
<comment>Description:</comment>
  Create or open shared memory block
  
  <strong>shmop_open()</strong> can create or open a shared memory block.

<comment>Param:</comment>
  <info>int</info>     <strong>$key</strong>          System's id for the shared memory block. Can be passed as a decimal or hex.
  <info>string</info>  <strong>$mode</strong>         The flags that you can use:  "a" for access (sets SHM_RDONLY for shmat) use
                        this flag when you need to open an existing shared memory segment for read
                        only  "c" for create (sets IPC_CREATE) use this flag when you need to create
                        a new shared memory segment or if a segment with the same key exists, try to
                        open it for read and write  "w" for read & write access use this flag when
                        you need to read and write to a shared memory segment, use this flag in most
                        cases.  "n" create a new memory segment (sets IPC_CREATE|IPC_EXCL) use this
                        flag when you want to create a new shared memory segment but if one already
                        exists with the same flag, fail. This is useful for security purposes, using
                        this you can prevent race condition exploits.
                        
                        "a" for access (sets SHM_RDONLY for shmat) use this flag when you need to
                        open an existing shared memory segment for read only
                        
                        "c" for create (sets IPC_CREATE) use this flag when you need to create a new
                        shared memory segment or if a segment with the same key exists, try to open
                        it for read and write
                        
                        "w" for read & write access use this flag when you need to read and write to
                        a shared memory segment, use this flag in most cases.
                        
                        "n" create a new memory segment (sets IPC_CREATE|IPC_EXCL) use this flag
                        when you want to create a new shared memory segment but if one already
                        exists with the same flag, fail. This is useful for security purposes, using
                        this you can prevent race condition exploits.
  <info>int</info>     <strong>$permissions</strong>  The permissions that you wish to assign to your memory segment, those are
                        the same as permission for a file. Permissions need to be passed in octal
                        form, like for example <return>0644</return>
  <info>int</info>     <strong>$size</strong>         The size of the shared memory block you wish to create in bytes

<comment>Return:</comment>
  <info>Shmop|false</info>  On success <strong>shmop_open()</strong> will return a <class>Shmop</class> instance that you can use to access the
               shared memory segment you've created. <info>false</info> is returned on failure.

<comment>See Also:</comment>
   * <strong>shmop_close()</strong>
   * <strong>shmop_delete()</strong>


id: shmop_read
type: function
doc:
<comment>Description:</comment>
  Read data from shared memory block
  
  <strong>shmop_read()</strong> will read a string from shared memory block.

<comment>Param:</comment>
  <info>Shmop</info>  <strong>$shmop</strong>   The shared memory block identifier created by  <strong>shmop_open()</strong>
  <info>int</info>    <strong>$offset</strong>  Offset from which to start reading; must be greater than or equal to zero and less
                  than or equal to the actual size of the shared memory segment.
  <info>int</info>    <strong>$size</strong>    The number of bytes to read; must be greater than or equal to zero, and the sum of
                  <strong>$offset</strong> and <strong>$size </strong> must be less than or equal to the actual size of the shared
                  memory segment. <return>0</return> reads shmop_size($shmid) - $start bytes.

<comment>Return:</comment>
  <info>string</info>  Returns the data 或者在失败时返回 <info>false</info>.

<comment>See Also:</comment>
   * <strong>shmop_write()</strong>


id: shmop_size
type: function
doc:
<comment>Description:</comment>
  Get size of shared memory block
  
  <strong>shmop_size()</strong> is used to get the size, in bytes of the shared memory block.

<comment>Param:</comment>
  <info>Shmop</info>  <strong>$shmop</strong>  The shared memory block identifier created by  <strong>shmop_open()</strong>

<comment>Return:</comment>
  <info>int</info>  Returns an int, which represents the number of bytes the shared memory block occupies.


id: shmop_write
type: function
doc:
<comment>Description:</comment>
  Write data into shared memory block
  
  <strong>shmop_write()</strong> will write a string into shared memory block.

<comment>Param:</comment>
  <info>Shmop</info>   <strong>$shmop</strong>   The shared memory block identifier created by  <strong>shmop_open()</strong>
  <info>string</info>  <strong>$data</strong>    A string to write into shared memory block
  <info>int</info>     <strong>$offset</strong>  Specifies where to start writing data inside the shared memory segment. The
                   offset must be greater than or equal to zero and less than or equal to the actual
                   size of the shared memory segment.

<comment>Return:</comment>
  <info>int</info>  The size of the written <strong>$data</strong>.

<comment>See Also:</comment>
   * <strong>shmop_read()</strong>


id: show_source
type: function
doc:
<comment>Description:</comment>
  别名 highlight_file
  
  此函数是该函数的别名： <strong>highlight_file()</strong>.


id: shuffle
type: function
doc:
<comment>Description:</comment>
  打乱数组
  
  本函数打乱（随机排列单元的顺序）一个数组。
  
  本函数并不会生成安全加密的值，并且不可用于加密或者要求返回值不可猜测的目的。
  
  如果需要加密安全随机，则可以将 <class>Random\Engine\Secure</class> 引擎用于 <class>Random\Randomizer</class>。对于简单的用例，
  <strong>random_int()</strong> 和 <strong>random_bytes()</strong> 函数提供了操作系统的 CSPRNG 支持的方便且安全的 API。

<comment>Param:</comment>
  <info>array</info>  <strong>$array</strong>  待操作的数组。

<comment>Return:</comment>
  <info>true</info>  总是返回 <info>true</info>。

<comment>See Also:</comment>
   * <strong>Random\Randomizer::shuffleArray()</strong>
   * <strong>Random\Randomizer::shuffleBytes()</strong>
   * <strong>Random\Randomizer::pickArrayKeys()</strong>
   * 数组排序函数对比


id: simdjson_decode
type: function
doc:
<comment>Description:</comment>
  Decodes a JSON string
  
  Takes a JSON encoded string and converts it into a PHP value. This uses a faster Simultaneous
  Instruction, Multiple Data implementation than <strong>json_decode()</strong> when it is supported by the computer
  architecture.

<comment>Param:</comment>
  <info>string</info>  <strong>$json</strong>         The <strong>$json</strong> <info>string</info> being decoded.
                        
                        This function only works with UTF-8 encoded strings.
                        
                        This function parses valid inputs which <strong>json_decode()</strong> can decode, provided
                        that they are less than 4 GiB long.
  <info>bool</info>    <strong>$associative</strong>  When <info>true</info>, JSON objects will be returned as associative <info>array</info>s; when <info>false</info>,
                        JSON objects will be returned as <info>object</info>s.
  <info>int</info>     <strong>$depth</strong>        Maximum nesting depth of the structure being decoded. The value must be
                        greater than <return>0</return>, and less than or equal to <return>2147483647</return>.
                         Callers should use reasonably small values, because larger depths require
                        more buffer space and will increase the recursion depth, unlike the current
                        <strong>json_decode()</strong> implementation.

<comment>Return:</comment>
  <info>mixed</info>  Returns the value encoded in <strong>$json</strong> in appropriate PHP type. Values <return>true</return>, <return>false</return> and <return>null</return> are
         returned as <info>true</info>, <info>false</info> and <info>null</info> respectively.

<comment>See Also:</comment>
   * <strong>json_encode()</strong>
   * <strong>json_decode()</strong>


id: simdjson_is_valid
type: function
doc:
<comment>Description:</comment>
  Check if a JSON string is valid
  
  Takes a JSON encoded string and returns true if it is valid.

<comment>Param:</comment>
  <info>string</info>  <strong>$json</strong>   The <strong>$json</strong> <info>string</info> being validated.
                  
                  This function only works with UTF-8 encoded strings.
                  
                  This function validates inputs which <strong>json_decode()</strong> can decode, provided that they
                  are less than 4 GiB long.
  <info>int</info>     <strong>$depth</strong>  Maximum nesting depth of the structure being validated. The value must be greater
                  than <return>0</return>, and less than or equal to <return>2147483647</return>.
                   Callers should use reasonably small values, because larger depths require more
                  buffer space and will increase the recursion depth, unlike the current
                  <strong>json_decode()</strong> implementation.

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info> if <strong>$json</strong> is a valid JSON string, <info>false</info> otherwise.

<comment>See Also:</comment>
   * <strong>json_encode()</strong>
   * <strong>json_decode()</strong>


id: simdjson_key_count
type: function
doc:
<comment>Description:</comment>
  Returns the value at a JSON pointer.
  
  Count the number of elements of the object/array found at the requested JSON pointer.

<comment>Param:</comment>
  <info>string</info>  <strong>$json</strong>                  The <strong>$json</strong> <info>string</info> being queried.
  <info>string</info>  <strong>$key</strong>                   The JSON pointer <info>string</info>.
  <info>int</info>     <strong>$depth</strong>                 Maximum nesting depth of the structure being validated. The value
                                 must be greater than <return>0</return>, and less than or equal to <return>2147483647</return>.
                                  Callers should use reasonably small values, because larger depths
                                 require more buffer space and will increase the recursion depth,
                                 unlike the current <strong>json_decode()</strong> implementation.
  <info>bool</info>    <strong>$throw_if_uncountable</strong>  When true, a <class>SimdJsonException</class> will be thrown instead of returning
                                 0 when the value the JSON pointer points to is neither an object
                                 nor an array.

<comment>Return:</comment>
  <info>int</info>  Returns an <info>int</info> with the number of elements of the value at the given JSON pointer.


id: simdjson_key_exists
type: function
doc:
<comment>Description:</comment>
  Check if the JSON contains the value referred to by a JSON pointer.
  
  Count the number of elements of the object/array found at the requested JSON pointer.

<comment>Param:</comment>
  <info>string</info>  <strong>$json</strong>                  The <strong>$json</strong> <info>string</info> being queried.
  <info>string</info>  <strong>$key</strong>                   The JSON pointer <info>string</info>.
  <info>int</info>     <strong>$depth</strong>                 Maximum nesting depth of the structure being validated. The value
                                 must be greater than <return>0</return>, and less than or equal to <return>2147483647</return>.
                                  Callers should use reasonably small values, because larger depths
                                 require more buffer space and will increase the recursion depth,
                                 unlike the current <strong>json_decode()</strong> implementation.
  <info></info>        <strong>$throw_if_uncountable</strong>  When true, a <class>SimdJsonException</class> will be thrown instead of returning
                                 0 when the value the JSON pointer points to is neither an object
                                 nor an array.

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info> if the JSON pointer is valid and refers to a value found within a valid JSON
        string. Returns <info>false</info> if the JSON is valid but does not contain the JSON pointer.


id: simdjson_key_value
type: function
doc:
<comment>Description:</comment>
  Decodes the value of a JSON string located at the requested JSON pointer.
  
  Decodes and returns the value found at the requested JSON pointer.

<comment>Param:</comment>
  <info>string</info>  <strong>$json</strong>         The <strong>$json</strong> <info>string</info> being queried and decoded.
                        
                        This function only works with UTF-8 encoded strings.
                        
                        This function parses valid inputs which <strong>json_decode()</strong> can decode, provided
                        that they are less than 4 GiB long.
  <info>string</info>  <strong>$key</strong>          The JSON pointer <info>string</info>.
  <info>bool</info>    <strong>$associative</strong>  When <info>true</info>, JSON objects will be returned as associative <info>array</info>s; when <info>false</info>,
                        JSON objects will be returned as <info>object</info>s.
  <info>int</info>     <strong>$depth</strong>        Maximum nesting depth of the structure being decoded. The value must be
                        greater than <return>0</return>, and less than or equal to <return>2147483647</return>.
                         Callers should use reasonably small values, because larger depths require
                        more buffer space and will increase the recursion depth, unlike the current
                        <strong>json_decode()</strong> implementation.

<comment>Return:</comment>
  <info>mixed</info>  Returns the part of the value encoded in <strong>$json</strong> that <strong>$key</strong> refers to in appropriate PHP type.
         Values <return>true</return>, <return>false</return> and <return>null</return> are returned as <info>true</info>, <info>false</info> and <info>null</info> respectively.

<comment>See Also:</comment>
   * <strong>json_encode()</strong>
   * <strong>simdjson_decode()</strong>


id: similar_text
type: function
doc:
<comment>Description:</comment>
  计算两个字符串的相似度
  
  两个字符串的相似程度计算依据 Programming Classics: Implementing the World's Best Algorithms by
  Oliver (ISBN 0-131-00413-1)  的描述进行。注意该实现没有使用 Oliver 虚拟码中的堆栈，但是却进行了递
  归调用，这个做法可能会导致整个过程变慢或变快。也请注意，该算法的复杂度是 O(N**3)，N 是最长字符串的
  长度。

<comment>Param:</comment>
  <info>string</info>  <strong>$string1</strong>  第一个字符串。
  <info>string</info>  <strong>$string2</strong>  第二个字符串。
                    
                    交换 <strong>$string1</strong> 和 <strong>$string2</strong> 可能会产生不同的结果；请看下面的示例。
  <info>float</info>   <strong>$percent</strong>  第三个参数通过引用传递，<strong>similar_text()</strong> 将以百分比计算相似度，通过将
                    <strong>similar_text()</strong> 的结果除以指定字符串长度的平均值然后乘以 <return>100</return>。

<comment>Return:</comment>
  <info>int</info>  返回在两个字符串中匹配字符的数量。
       
       The number of matching characters is calculated by finding the longest first common
       substring, and then doing this for the prefixes and the suffixes, recursively. The lengths of
       all found common substrings are added.

<comment>See Also:</comment>
   * <strong>levenshtein()</strong>
   * <strong>soundex()</strong>


id: simplexml_import_dom
type: function
doc:
<comment>Description:</comment>
  Get a SimpleXMLElement object from a DOM node
  
  This function takes a node of a DOM document and makes it into a SimpleXML node. This new object
  can then be used as a native SimpleXML element.

<comment>Param:</comment>
  <info>SimpleXMLElement|DOMNode</info>  <strong>$node</strong>        A DOM Element node
  <info>string|null</info>               <strong>$class_name</strong>  You may use this optional parameter so that
                                         <strong>simplexml_import_dom()</strong> will return an object of  the
                                         specified class. That class should extend the
                                         <info>SimpleXMLElement</info> class.

<comment>Return:</comment>
  <info>SimpleXMLElement|null</info>  Returns a <info>SimpleXMLElement</info> or <info>null</info> on failure.

<comment>See Also:</comment>
   * <strong>dom_import_simplexml()</strong>
   * 


id: simplexml_load_file
type: function
doc:
<comment>Description:</comment>
  Interprets an XML file into an object
    
  
  Convert the well-formed XML document in the given file to an object.

<comment>Param:</comment>
  <info>string</info>       <strong>$filename</strong>             Path to the XML file
  <info>string|null</info>  <strong>$class_name</strong>           You may use this optional parameter so that
                                     <strong>simplexml_load_file()</strong> will return an object of  the specified
                                     class. That class should extend the  <info>SimpleXMLElement</info> class.
  <info>int</info>          <strong>$options</strong>              Bitwise <return>OR</return> of the libxml option constants.
  <info>string</info>       <strong>$namespace_or_prefix</strong>  Namespace prefix or URI.
  <info>bool</info>         <strong>$is_prefix</strong>            <info>true</info> if <strong>$namespace_or_prefix</strong> is a prefix, <info>false</info> if it's a URI;
                                     defaults to <info>false</info>.

<comment>Return:</comment>
  <info>SimpleXMLElement|false</info>  Returns an <info>object</info> of class <info>SimpleXMLElement</info> with properties containing the
                          data held within the XML document, 或者在失败时返回 <info>false</info>.
                          
                          此函数可能返回布尔值
                          <info>false</info>，但也可能返回等同于 <info>false</info> 的非布尔值。请阅读 布尔类型章节以获取更多
                          信息。应使用
                          ===
                          运算符来测试此函数的返回值。

<comment>See Also:</comment>
   * <strong>simplexml_load_string()</strong>
   * SimpleXMLElement::__construct
   * 
   * <strong>libxml_use_internal_errors()</strong>
   * 
   * <strong>libxml_set_streams_context()</strong>


id: simplexml_load_string
type: function
doc:
<comment>Description:</comment>
  Interprets a string of XML into an object
    
  
  Takes a well-formed XML string and returns it as an object.

<comment>Param:</comment>
  <info>string</info>       <strong>$data</strong>                 A well-formed XML string
  <info>string|null</info>  <strong>$class_name</strong>           You may use this optional parameter so that
                                     <strong>simplexml_load_string()</strong> will return an object of  the specified
                                     class. That class should extend the  <info>SimpleXMLElement</info> class.
  <info>int</info>          <strong>$options</strong>              Bitwise <return>OR</return> of the libxml option constants.
  <info>string</info>       <strong>$namespace_or_prefix</strong>  Namespace prefix or URI.
  <info>bool</info>         <strong>$is_prefix</strong>            <info>true</info> if <strong>$namespace_or_prefix</strong> is a prefix, <info>false</info> if it's a URI;
                                     defaults to <info>false</info>.

<comment>Return:</comment>
  <info>SimpleXMLElement|false</info>  Returns an <info>object</info> of class <info>SimpleXMLElement</info> with properties containing the
                          data held within the xml document, 或者在失败时返回 <info>false</info>.
                          
                          此函数可能返回布尔值
                          <info>false</info>，但也可能返回等同于 <info>false</info> 的非布尔值。请阅读 布尔类型章节以获取更多
                          信息。应使用
                          ===
                          运算符来测试此函数的返回值。

<comment>See Also:</comment>
   * <strong>simplexml_load_file()</strong>
   * SimpleXMLElement::__construct
   * 
   * <strong>libxml_use_internal_errors()</strong>
   * 


id: sin
type: function
doc:
<comment>Description:</comment>
  正弦
  
  <strong>sin()</strong> 返回参数 <strong>$num</strong> 的正弦值。参数 <strong>$num</strong> 的单位为弧度。

<comment>Param:</comment>
  <info>float</info>  <strong>$num</strong>  单位是弧度的值。

<comment>Return:</comment>
  <info>float</info>  <strong>$num</strong> 的正弦值

<comment>See Also:</comment>
   * <strong>asin()</strong>
   * <strong>sinh()</strong>
   * <strong>cos()</strong>
   * <strong>tan()</strong>
   * <strong>deg2rad()</strong>


id: sinh
type: function
doc:
<comment>Description:</comment>
  双曲正弦
  
  返回 <strong>$num</strong> 的双曲正弦值，定义为 <return>(exp($num) - exp(-$num))/2</return>。

<comment>Param:</comment>
  <info>float</info>  <strong>$num</strong>  要处理的参数

<comment>Return:</comment>
  <info>float</info>  <strong>$num</strong> 的双曲正弦值

<comment>See Also:</comment>
   * <strong>sin()</strong>
   * <strong>asinh()</strong>
   * <strong>cosh()</strong>
   * <strong>tanh()</strong>


id: sleep
type: function
doc:
<comment>Description:</comment>
  延缓执行
  
  程序延迟执行指定的 <strong>$seconds</strong> 的秒数。
  
  为了让程序执行延迟几分之一秒，应使用 <strong>usleep()</strong>，因为 <strong>sleep()</strong> 需要 <info>int</info>。例如 sleep(0.25) 会使程序暂
  停 <return>0</return> 秒。

<comment>Param:</comment>
  <info>int</info>  <strong>$seconds</strong>  暂停的秒数（必须大于或等于 <return>0</return>）。

<comment>Return:</comment>
  <info>int</info>  成功时返回 0。
       
       如果函数的调用被一个信号中止，<strong>sleep()</strong> 会返回一个非零的值。在 Windows 上，该值总是 <return>192</return>（即
       Windows API 常量 <info>WAIT_IO_COMPLETION</info> 的值）。其他平台上，该返回值是剩余未 sleep 的秒数。

<comment>See Also:</comment>
   * <strong>usleep()</strong>
   * <strong>time_nanosleep()</strong>
   * <strong>time_sleep_until()</strong>
   * <strong>set_time_limit()</strong>


id: snmp2_get
type: function
doc:
<comment>Description:</comment>
  Fetch an SNMP object
  
  The <strong>snmp2_get()</strong> function is used to read the value of an SNMP object specified by the <strong>$object_id</strong>.

<comment>Param:</comment>
  <info>string</info>        <strong>$hostname</strong>   The SNMP agent.
  <info>string</info>        <strong>$community</strong>  The read community.
  <info>array|string</info>  <strong>$object_id</strong>  The SNMP object.
  <info>int</info>           <strong>$timeout</strong>    The number of microseconds until the first timeout.
  <info>int</info>           <strong>$retries</strong>    The number of times to retry if timeouts occur.

<comment>Return:</comment>
  <info>mixed</info>  Returns SNMP object value on success or <info>false</info> on error.

<comment>See Also:</comment>
   * <strong>snmp2_set()</strong>


id: snmp2_getnext
type: function
doc:
<comment>Description:</comment>
  Fetch the SNMP object which follows the given object id
  
  The <strong>snmp2_get_next()</strong> function is used to read the value of the SNMP object that follows the
  specified <strong>$object_id</strong>.

<comment>Param:</comment>
  <info>string</info>        <strong>$hostname</strong>   The hostname of the SNMP agent (server).
  <info>string</info>        <strong>$community</strong>  The read community.
  <info>array|string</info>  <strong>$object_id</strong>  The SNMP object id which precedes the wanted one.
  <info>int</info>           <strong>$timeout</strong>    The number of microseconds until the first timeout.
  <info>int</info>           <strong>$retries</strong>    The number of times to retry if timeouts occur.

<comment>Return:</comment>
  <info>mixed</info>  Returns SNMP object value on success or <info>false</info> on error. In case of an error, an E_WARNING
         message is shown.

<comment>See Also:</comment>
   * <strong>snmp2_get()</strong>
   * <strong>snmp2_walk()</strong>


id: snmp2_real_walk
type: function
doc:
<comment>Description:</comment>
  Return all objects including their respective object ID within the specified one
  
  The <strong>snmp2_real_walk()</strong> function is used to traverse over a number of SNMP objects starting from
  <strong>$object_id</strong> and return not only their values but also their object ids.

<comment>Param:</comment>
  <info>string</info>        <strong>$hostname</strong>   The hostname of the SNMP agent (server).
  <info>string</info>        <strong>$community</strong>  The read community.
  <info>array|string</info>  <strong>$object_id</strong>  The SNMP object id which precedes the wanted one.
  <info>int</info>           <strong>$timeout</strong>    The number of microseconds until the first timeout.
  <info>int</info>           <strong>$retries</strong>    The number of times to retry if timeouts occur.

<comment>Return:</comment>
  <info>array|false</info>  Returns an associative array of the SNMP object ids and their values on success or
               <info>false</info> on error. In case of an error, an E_WARNING message is shown.

<comment>See Also:</comment>
   * <strong>snmp2_walk()</strong>


id: snmp2_set
type: function
doc:
<comment>Description:</comment>
  Set the value of an SNMP object
  
  <strong>snmp2_set()</strong> is used to set the value of an SNMP object specified by the <strong>$object_id</strong>.

<comment>Param:</comment>
  <info>string</info>        <strong>$hostname</strong>   The hostname of the SNMP agent (server).
  <info>string</info>        <strong>$community</strong>  The write community.
  <info>array|string</info>  <strong>$object_id</strong>  The SNMP object id.
  <info>array|string</info>  <strong>$type</strong>       MIB 定义了各个对象 id 的类型。必须是下面列出的单个字符之一。
                            
                            如果在编译 SNMP 库时定义了 <info>OPAQUE_SPECIAL_TYPES</info>，那么下列值是合法的：
                            
                            这些值大都会使用与 ASN.1 相符的类型。's'，'x'，'d'
                            以及 'b' 都是指定一个八字节字符串值的方式。并且 'u' 无符号类型也可用于处
                            理 Gauge32 值。
                            
                            如果 MIB 文件是用 "snmp_read_mib" 或者通过在 libsnmp config 中指定而加载
                            入 MIB 树时，
                            '=' 可以被用作为所有对象的 <strong>$type</strong> 参数，因为 type 可以被自动从 MIB 中读
                            取。
                            
                            注意有两种方式可以设定 BITS 类型的变量，例如
                            "SYNTAX    BITS {telnet(0), ftp(1), http(2), icmp(3), snmp(4), ssh(5),
                            https(6)}":
                            
                            使用 "b" 类型以及一个位数的列表。不推荐使用此方法，因为 GET 查询对同一个
                            OID 将会返回例如 0xF8。
                            
                            使用 "x" 类型以及一个十六进制数但是不需要通常的 "0x" 前缀。
                            
                            更多细节见示例部分。
  <info>array|string</info>  <strong>$value</strong>      The new value.
  <info>int</info>           <strong>$timeout</strong>    The number of microseconds until the first timeout.
  <info>int</info>           <strong>$retries</strong>    The number of times to retry if timeouts occur.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。
        
        If the SNMP host rejects the data type, an E_WARNING message like "Warning: Error in packet.
        Reason: (badValue) The value given has the wrong type or length." is shown. If an unknown or
        invalid OID is specified the warning probably reads "Could not add variable".

<comment>See Also:</comment>
   * <strong>snmp2_get()</strong>


id: snmp2_walk
type: function
doc:
<comment>Description:</comment>
  Fetch all the SNMP objects from an agent
  
  <strong>snmp2_walk()</strong> function is used to read all the values from an SNMP agent specified by the
  <strong>$hostname</strong>.

<comment>Param:</comment>
  <info>string</info>        <strong>$hostname</strong>   The SNMP agent (server).
  <info>string</info>        <strong>$community</strong>  The read community.
  <info>array|string</info>  <strong>$object_id</strong>  If <info>null</info>, <strong>$object_id</strong> is taken as the root of the SNMP objects tree and
                            all objects under that tree are returned as an array.
                            
                            If <strong>$object_id</strong> is specified, all the SNMP objects below that <strong>$object_id</strong>
                            are returned.
  <info>int</info>           <strong>$timeout</strong>    The number of microseconds until the first timeout.
  <info>int</info>           <strong>$retries</strong>    The number of times to retry if timeouts occur.

<comment>Return:</comment>
  <info>array|false</info>  Returns an array of SNMP object values starting from the <strong>$object_id</strong> as root or <info>false</info>
               on error.

<comment>See Also:</comment>
   * <strong>snmp2_real_walk()</strong>


id: snmp3_get
type: function
doc:
<comment>Description:</comment>
  Fetch an SNMP object
  
  The <strong>snmp3_get()</strong> function is used to read the value of an SNMP object specified by the <strong>$object_id</strong>.

<comment>Param:</comment>
  <info>string</info>        <strong>$hostname</strong>            The hostname of the SNMP agent (server).
  <info>string</info>        <strong>$security_name</strong>       the security name, usually some kind of username
  <info>string</info>        <strong>$security_level</strong>      the security level (noAuthNoPriv|authNoPriv|authPriv)
  <info>string</info>        <strong>$auth_protocol</strong>       the authentication protocol (<return>"MD5"</return>, <return>"SHA"</return>, <return>"SHA256"</return>, or
                                     <return>"SHA512"</return>)
  <info>string</info>        <strong>$auth_passphrase</strong>     the authentication pass phrase
  <info>string</info>        <strong>$privacy_protocol</strong>    the privacy protocol (DES or AES)
  <info>string</info>        <strong>$privacy_passphrase</strong>  the privacy pass phrase
  <info>array|string</info>  <strong>$object_id</strong>           The SNMP object id.
  <info>int</info>           <strong>$timeout</strong>             The number of microseconds until the first timeout.
  <info>int</info>           <strong>$retries</strong>             The number of times to retry if timeouts occur.

<comment>Return:</comment>
  <info>mixed</info>  Returns SNMP object value on success or <info>false</info> on error.

<comment>See Also:</comment>
   * <strong>snmp3_set()</strong>


id: snmp3_getnext
type: function
doc:
<comment>Description:</comment>
  Fetch the SNMP object which follows the given object id
  
  The <strong>snmp3_getnext()</strong> function is used to read the value of the SNMP object that follows the
  specified <strong>$object_id</strong>.

<comment>Param:</comment>
  <info>string</info>        <strong>$hostname</strong>            The hostname of the SNMP agent (server).
  <info>string</info>        <strong>$security_name</strong>       the security name, usually some kind of username
  <info>string</info>        <strong>$security_level</strong>      the security level (noAuthNoPriv|authNoPriv|authPriv)
  <info>string</info>        <strong>$auth_protocol</strong>       the authentication protocol (<return>"MD5"</return>, <return>"SHA"</return>, <return>"SHA256"</return>, or
                                     <return>"SHA512"</return>)
  <info>string</info>        <strong>$auth_passphrase</strong>     the authentication pass phrase
  <info>string</info>        <strong>$privacy_protocol</strong>    the privacy protocol (DES or AES)
  <info>string</info>        <strong>$privacy_passphrase</strong>  the privacy pass phrase
  <info>array|string</info>  <strong>$object_id</strong>           The SNMP object id.
  <info>int</info>           <strong>$timeout</strong>             The number of microseconds until the first timeout.
  <info>int</info>           <strong>$retries</strong>             The number of times to retry if timeouts occur.

<comment>Return:</comment>
  <info>mixed</info>  Returns SNMP object value on success or <info>false</info> on error. In case of an error, an E_WARNING
         message is shown.

<comment>See Also:</comment>
   * <strong>snmp3_get()</strong>
   * <strong>snmp3_walk()</strong>


id: snmp3_real_walk
type: function
doc:
<comment>Description:</comment>
  Return all objects including their respective object ID within the specified one
  
  The <strong>snmp3_real_walk()</strong> function is used to traverse over a number of SNMP objects starting from
  <strong>$object_id</strong> and return not only their values but also their object ids.

<comment>Param:</comment>
  <info>string</info>        <strong>$hostname</strong>            The hostname of the SNMP agent (server).
  <info>string</info>        <strong>$security_name</strong>       the security name, usually some kind of username
  <info>string</info>        <strong>$security_level</strong>      the security level (noAuthNoPriv|authNoPriv|authPriv)
  <info>string</info>        <strong>$auth_protocol</strong>       the authentication protocol (MD5 or SHA)
  <info>string</info>        <strong>$auth_passphrase</strong>     the authentication pass phrase
  <info>string</info>        <strong>$privacy_protocol</strong>    the authentication protocol (<return>"MD5"</return>, <return>"SHA"</return>, <return>"SHA256"</return>, or
                                     <return>"SHA512"</return>)
  <info>string</info>        <strong>$privacy_passphrase</strong>  the privacy pass phrase
  <info>array|string</info>  <strong>$object_id</strong>           The SNMP object id.
  <info>int</info>           <strong>$timeout</strong>             The number of microseconds until the first timeout.
  <info>int</info>           <strong>$retries</strong>             The number of times to retry if timeouts occur.

<comment>Return:</comment>
  <info>array|false</info>  Returns an associative array of the SNMP object ids and their values on success or
               <info>false</info> on error. In case of an error, an E_WARNING message is shown.

<comment>See Also:</comment>
   * <strong>snmpwalk()</strong>


id: snmp3_set
type: function
doc:
<comment>Description:</comment>
  Set the value of an SNMP object
  
  <strong>snmp3_set()</strong> is used to set the value of an SNMP object specified by the <strong>$object_id</strong>.
  
  Even if the security level does not use an auth or priv protocol/password valid values have to be
  specified.

<comment>Param:</comment>
  <info>string</info>        <strong>$hostname</strong>            The hostname of the SNMP agent (server).
  <info>string</info>        <strong>$security_name</strong>       the security name, usually some kind of username
  <info>string</info>        <strong>$security_level</strong>      the security level (noAuthNoPriv|authNoPriv|authPriv)
  <info>string</info>        <strong>$auth_protocol</strong>       the authentication protocol (MD5 or SHA)
  <info>string</info>        <strong>$auth_passphrase</strong>     the authentication pass phrase
  <info>string</info>        <strong>$privacy_protocol</strong>    the privacy protocol (DES or AES)
  <info>string</info>        <strong>$privacy_passphrase</strong>  the privacy pass phrase
  <info>array|string</info>  <strong>$object_id</strong>           The SNMP object id.
  <info>array|string</info>  <strong>$type</strong>                MIB 定义了各个对象 id 的类型。必须是下面列出的单个字符之一。
                                     
                                     如果在编译 SNMP 库时定义了 <info>OPAQUE_SPECIAL_TYPES</info>，那么下列值是合
                                     法的：
                                     
                                     这些值大都会使用与 ASN.1 相符的类型。's'，'x'，'d'
                                     以及 'b' 都是指定一个八字节字符串值的方式。并且 'u' 无符号类型
                                     也可用于处理 Gauge32 值。
                                     
                                     如果 MIB 文件是用 "snmp_read_mib" 或者通过在 libsnmp config 中
                                     指定而加载入 MIB 树时，
                                     '=' 可以被用作为所有对象的 <strong>$type</strong> 参数，因为 type 可以被自动从
                                     MIB 中读取。
                                     
                                     注意有两种方式可以设定 BITS 类型的变量，例如
                                     "SYNTAX    BITS {telnet(0), ftp(1), http(2), icmp(3), snmp(4),
                                     ssh(5), https(6)}":
                                     
                                     使用 "b" 类型以及一个位数的列表。不推荐使用此方法，因为 GET 查
                                     询对同一个 OID 将会返回例如 0xF8。
                                     
                                     使用 "x" 类型以及一个十六进制数但是不需要通常的 "0x" 前缀。
                                     
                                     更多细节见示例部分。
  <info>array|string</info>  <strong>$value</strong>               The new value
  <info>int</info>           <strong>$timeout</strong>             The number of microseconds until the first timeout.
  <info>int</info>           <strong>$retries</strong>             The number of times to retry if timeouts occur.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。
        
        If the SNMP host rejects the data type, an E_WARNING message like "Warning: Error in packet.
        Reason: (badValue) The value given has the wrong type or length." is shown. If an unknown or
        invalid OID is specified the warning probably reads "Could not add variable".


id: snmp3_walk
type: function
doc:
<comment>Description:</comment>
  Fetch all the SNMP objects from an agent
  
  <strong>snmp3_walk()</strong> function is used to read all the values from an SNMP agent specified by the
  <strong>$hostname</strong>.
  
  Even if the security level does not use an auth or priv protocol/password valid values have to be
  specified.

<comment>Param:</comment>
  <info>string</info>        <strong>$hostname</strong>            The hostname of the SNMP agent (server).
  <info>string</info>        <strong>$security_name</strong>       the security name, usually some kind of username
  <info>string</info>        <strong>$security_level</strong>      the security level (noAuthNoPriv|authNoPriv|authPriv)
  <info>string</info>        <strong>$auth_protocol</strong>       the authentication protocol (<return>"MD5"</return>, <return>"SHA"</return>, <return>"SHA256"</return>, or
                                     <return>"SHA512"</return>)
  <info>string</info>        <strong>$auth_passphrase</strong>     the authentication pass phrase
  <info>string</info>        <strong>$privacy_protocol</strong>    the privacy protocol (DES or AES)
  <info>string</info>        <strong>$privacy_passphrase</strong>  the privacy pass phrase
  <info>array|string</info>  <strong>$object_id</strong>           If <info>null</info>, <strong>$object_id</strong> is taken as the root of the SNMP objects
                                     tree and all objects under that tree are returned as an array.
                                     
                                     If <strong>$object_id</strong> is specified, all the SNMP objects below that
                                     <strong>$object_id</strong> are returned.
  <info>int</info>           <strong>$timeout</strong>             The number of microseconds until the first timeout.
  <info>int</info>           <strong>$retries</strong>             The number of times to retry if timeouts occur.

<comment>Return:</comment>
  <info>array|false</info>  Returns an array of SNMP object values starting from the <strong>$object_id</strong> as root or <info>false</info>
               on error.

<comment>See Also:</comment>
   * <strong>snmp3_real_walk()</strong>


id: snmp_get_quick_print
type: function
doc:
<comment>Description:</comment>
  获取当前 NET-SNMP 库的 quick_print 设置的值
    
  
  返回当前 NET-SNMP 库中存储的 quick_print 值。 quick_print 默认为 off。

<comment>Return:</comment>
  <info>bool</info>  如果 quick_print 为 on，返回 <info>true</info> 否则为 <info>false</info>。

<comment>See Also:</comment>
   * <strong>snmp_set_quick_print()</strong> 查看 quick_print 的详细说明。


id: snmp_get_valueretrieval
type: function
doc:
<comment>Description:</comment>
  Return the method how the SNMP values will be returned

<comment>Return:</comment>
  <info>int</info>  OR-ed combitantion of constants ( <info>SNMP_VALUE_LIBRARY</info> or <info>SNMP_VALUE_PLAIN</info> ) with possible
       SNMP_VALUE_OBJECT set.

<comment>See Also:</comment>
   * <strong>snmp_set_valueretrieval()</strong>
   * 


id: snmp_read_mib
type: function
doc:
<comment>Description:</comment>
  Reads and parses a MIB file into the active MIB tree
    
  
  This function is used to load additional, e.g. vendor specific, MIBs so that human readable OIDs
  like <return>VENDOR-MIB::foo.1</return> instead of error prone numeric OIDs can be used.
  
  The order in which the MIBs are loaded does matter as the underlying Net-SNMP library will print
  warnings if referenced objects cannot be resolved.

<comment>Param:</comment>
  <info>string</info>  <strong>$filename</strong>  The filename of the MIB.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。


id: snmp_set_enum_print
type: function
doc:
<comment>Description:</comment>
  Return all values that are enums with their enum value instead of the raw integer
    
  
  This function toggles if snmpwalk/snmpget etc. should automatically lookup enum values in the MIB
  and return them together with their human readable string.

<comment>Param:</comment>
  <info>bool</info>  <strong>$enable</strong>  As the value is interpreted as boolean by the Net-SNMP library, it can only be "0"
                 or "1".

<comment>Return:</comment>
  <info>true</info>  总是返回 <info>true</info>。


id: snmp_set_oid_numeric_print
type: function
doc:
<comment>Description:</comment>
  别名 snmp_set_oid_output_format
  
  此函数是该函数的别名： <strong>snmp_set_oid_output_format()</strong>.

<comment>See Also:</comment>
   * <strong>snmp_set_oid_output_format()</strong>


id: snmp_set_oid_output_format
type: function
doc:
<comment>Description:</comment>
  Set the OID output format
    
  
  <strong>snmp_set_oid_output_format()</strong> sets the output format to be full or numeric.

<comment>Param:</comment>
  <info>int</info>  <strong>$format</strong>  

<comment>Return:</comment>
  <info>true</info>  总是返回 <info>true</info>。


id: snmp_set_quick_print
type: function
doc:
<comment>Description:</comment>
  在 NET-SNMP 库中设置 enable 的值
    
  
  设置 NET-SNMP 库中 <strong>$enable</strong> 的值。当设置为（1），SNMP 库将返回“quick printed”。这意味着仅会打印值。
  当 <strong>$enable</strong> 未启用（默认），NET-SNMP 库输出额外信息，包含值的类型（比如 IpAddress 或 OID）。此外，
  如果 quick_print 未启用，库将为所有字符串额外打印出三个或更少字符的十六进制值。
  
  默认情况下，NET-SNMP 库返回详细值，quick_print 仅用于返回值。
  
  目前字符串仍会返回带有额外的引号，这将在以后的版本中得到纠正。

<comment>Param:</comment>
  <info>bool</info>  <strong>$enable</strong>  

<comment>Return:</comment>
  <info>true</info>  总是返回 <info>true</info>。

<comment>See Also:</comment>
   * <strong>snmp_get_quick_print()</strong>


id: snmp_set_valueretrieval
type: function
doc:
<comment>Description:</comment>
  Specify the method how the SNMP values will be returned

<comment>Param:</comment>
  <info>int</info>  <strong>$method</strong>  

<comment>Return:</comment>
  <info>true</info>  总是返回 <info>true</info>。

<comment>See Also:</comment>
   * <strong>snmp_get_valueretrieval()</strong>
   * 


id: snmpget
type: function
doc:
<comment>Description:</comment>
  获取 SNMP 对象
  
  <strong>snmpget()</strong> 函数用于读取由 <strong>$object_id</strong> 指定的 SNMP 对象的值。

<comment>Param:</comment>
  <info>string</info>        <strong>$hostname</strong>   SNMP 代理。
  <info>string</info>        <strong>$community</strong>  The read community.
  <info>array|string</info>  <strong>$object_id</strong>  SNMP 对象。
  <info>int</info>           <strong>$timeout</strong>    第一次超时前的微秒数。
  <info>int</info>           <strong>$retries</strong>    发生超时时重试的次数。

<comment>Return:</comment>
  <info>mixed</info>  成功时返回 SNMP 对象值，错误时为 <info>false</info>。

<comment>See Also:</comment>
   * <strong>snmpset()</strong>


id: snmpgetnext
type: function
doc:
<comment>Description:</comment>
  Fetch the SNMP object which follows the given object id
    
  
  The <strong>snmpgetnext()</strong> function is used to read the value of the SNMP object that follows the specified
  <strong>$object_id</strong>.

<comment>Param:</comment>
  <info>string</info>        <strong>$hostname</strong>   The hostname of the SNMP agent (server).
  <info>string</info>        <strong>$community</strong>  The read community.
  <info>array|string</info>  <strong>$object_id</strong>  The SNMP object id which precedes the wanted one.
  <info>int</info>           <strong>$timeout</strong>    The number of microseconds until the first timeout.
  <info>int</info>           <strong>$retries</strong>    The number of times to retry if timeouts occur.

<comment>Return:</comment>
  <info>mixed</info>  Returns SNMP object value on success or <info>false</info> on error. In case of an error, an E_WARNING
         message is shown.

<comment>See Also:</comment>
   * <strong>snmpget()</strong>
   * <strong>snmpwalk()</strong>


id: snmprealwalk
type: function
doc:
<comment>Description:</comment>
  返回指定的所有对象，包括它们各自的对象 ID
    
  
  <strong>snmprealwalk()</strong> 函数用于遍历从 <strong>$object_id</strong> 开始的多个 SNMP 对象，不仅返回它们的值，还返回它们的对象
  ID。

<comment>Param:</comment>
  <info>string</info>        <strong>$hostname</strong>   SNMP 代理（服务器）的主机名。
  <info>string</info>        <strong>$community</strong>  The read community.
  <info>array|string</info>  <strong>$object_id</strong>  在所需对象之前的 SNMP 对象 ID。
  <info>int</info>           <strong>$timeout</strong>    第一次超时前的微秒数。
  <info>int</info>           <strong>$retries</strong>    发生超时时重试的次数。

<comment>Return:</comment>
  <info>array|false</info>  成功时返回 SNMP 对象 ID 及其值的关联数组，错误时返回 <info>false</info>。如果出现错误，将显示一条
               E_WARNING 消息。

<comment>See Also:</comment>
   * <strong>snmpwalk()</strong>


id: snmpset
type: function
doc:
<comment>Description:</comment>
  设置 SNMP 对象的值
  
  <strong>snmpset()</strong> 用于通过 <strong>$object_id</strong> 设置 SNMP 对象的值。

<comment>Param:</comment>
  <info>string</info>        <strong>$hostname</strong>   SNMP 代理（服务器）的主机名。
  <info>string</info>        <strong>$community</strong>  The write community.
  <info>array|string</info>  <strong>$object_id</strong>  SNMP 对象 ID。
  <info>array|string</info>  <strong>$type</strong>       MIB 定义了各个对象 id 的类型。必须是下面列出的单个字符之一。
                            
                            如果在编译 SNMP 库时定义了 <info>OPAQUE_SPECIAL_TYPES</info>，那么下列值是合法的：
                            
                            这些值大都会使用与 ASN.1 相符的类型。's'，'x'，'d'
                            以及 'b' 都是指定一个八字节字符串值的方式。并且 'u' 无符号类型也可用于处
                            理 Gauge32 值。
                            
                            如果 MIB 文件是用 "snmp_read_mib" 或者通过在 libsnmp config 中指定而加载
                            入 MIB 树时，
                            '=' 可以被用作为所有对象的 <strong>$type</strong> 参数，因为 type 可以被自动从 MIB 中读
                            取。
                            
                            注意有两种方式可以设定 BITS 类型的变量，例如
                            "SYNTAX    BITS {telnet(0), ftp(1), http(2), icmp(3), snmp(4), ssh(5),
                            https(6)}":
                            
                            使用 "b" 类型以及一个位数的列表。不推荐使用此方法，因为 GET 查询对同一个
                            OID 将会返回例如 0xF8。
                            
                            使用 "x" 类型以及一个十六进制数但是不需要通常的 "0x" 前缀。
                            
                            更多细节见示例部分。
  <info>array|string</info>  <strong>$value</strong>      新值。
  <info>int</info>           <strong>$timeout</strong>    第一次超时前的微秒数。
  <info>int</info>           <strong>$retries</strong>    发生超时时重试的次数。

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。
        
        如果 SNMP 主机拒绝该数据类型，则会出现一条 E_WARNING 消息，例如显示“Warning: Error in
        packet. Reason:(badValue)The value given has the wrong type or length.”。如果指定了未知或无
        效的 OID，警告可能会显示为“Could not add variable”。

<comment>See Also:</comment>
   * <strong>snmpget()</strong>


id: snmpwalk
type: function
doc:
<comment>Description:</comment>
  从代理获取所有 SNMP 对象
  
  <strong>snmpwalk()</strong> 函数用于从 <strong>$hostname</strong> 指定的 SNMP 代理读取所有值。

<comment>Param:</comment>
  <info>string</info>        <strong>$hostname</strong>   SNMP 代理（服务器）。
  <info>string</info>        <strong>$community</strong>  The read community.
  <info>array|string</info>  <strong>$object_id</strong>  如果为 <info>null</info>，则将 <strong>$object_id</strong> 作为 SNMP 对象树的根，并且该树下的所有对象
                            都作为数组返回。
                            
                            如果指定了 <strong>$object_id</strong>，则返回该 <strong>$object_id</strong> 下面的所有 SNMP 对象。
  <info>int</info>           <strong>$timeout</strong>    第一次超时前的微秒数。
  <info>int</info>           <strong>$retries</strong>    发生超时时重试的次数。

<comment>Return:</comment>
  <info>array|false</info>  返回从 <strong>$object_id</strong> 开始的 SNMP 对象值数组，如 root 或错误时为 <info>false</info>。

<comment>See Also:</comment>
   * <strong>snmprealwalk()</strong>


id: snmpwalkoid
type: function
doc:
<comment>Description:</comment>
  查询有关网络实体的信息树
    
  
  <strong>snmpwalkoid()</strong> 函数用于从 <strong>$hostname</strong> 指定的 SNMP 代理读取所有对象 ID 及其各自的值。
  
  <strong>snmpwalkoid()</strong> 和 <strong>snmpwalk()</strong> 的存在是有历史原因的。提供这两个函数是为了向后兼容。请改用
  <strong>snmprealwalk()</strong>。

<comment>Param:</comment>
  <info>string</info>        <strong>$hostname</strong>   SNMP 代理。
  <info>string</info>        <strong>$community</strong>  The read community.
  <info>array|string</info>  <strong>$object_id</strong>  如果为 <info>null</info>，则将 <strong>$object_id</strong> 作为 SNMP 对象树的根，并且该树下的所有对象
                            都作为数组返回。
                            
                            如果指定了 <strong>$object_id</strong>，则返回该 <strong>$object_id</strong> 下面的所有 SNMP 对象。
  <info>int</info>           <strong>$timeout</strong>    第一次超时前的微秒数。
  <info>int</info>           <strong>$retries</strong>    发生超时时重试的次数。

<comment>Return:</comment>
  <info>array|false</info>  返回关联数组，其中包含对象 ID 及其各自的对象值，从 <strong>$object_id</strong> 开始为 root 或错误时为
               <info>false</info>。

<comment>See Also:</comment>
   * <strong>snmpwalk()</strong>


id: socket_accept
type: function
doc:
<comment>Description:</comment>
  接受套接字上的连接
  
  <strong>$socket</strong> 是从 <strong>socket_create()</strong> 创建，使用  <strong>socket_bind()</strong> 绑定，<strong>socket_listen()</strong> 监听的一个套接字实
  例。此函数接受在  <strong>$socket</strong> 上创建的连接。当连接被成功创建后，返回一个可用于通信的  <class>Socket</class> 实例。若
  有多个连接排队，返回队头第一个连接。若没有待处理的连接，那么  <strong>socket_accept()</strong> 默认阻塞，直到有一个
  连接出现。如果  <strong>$socket</strong> 使用 <strong>socket_set_blocking()</strong> 或  <strong>socket_set_nonblock()</strong> 设置为非阻塞，那么
  <strong>socket_accept()</strong> 将直接返回 <info>false</info>。
  
  <strong>socket_accept()</strong> 返回的 <class>Socket</class> 实例不能用于接受新的连接。但  <strong>$socket</strong> 依然保持打开状态，并且可以继续
  接受新的连接。

<comment>Param:</comment>
  <info>Socket</info>  <strong>$socket</strong>  使用 <strong>socket_create()</strong> 创建的 <class>Socket</class> 实例。

<comment>Return:</comment>
  <info>Socket|false</info>  成功时返回一个新的 <class>Socket</class> 实例，错误时返回 <info>false</info>。可以通过调用  <strong>socket_last_error()</strong>
                来检索实际的错误代码。将错误代码作为参数传递给  <strong>socket_strerror()</strong> 以获得错误的文本解
                释。

<comment>See Also:</comment>
   * <strong>socket_connect()</strong>
   * <strong>socket_listen()</strong>
   * <strong>socket_create()</strong>
   * <strong>socket_bind()</strong>
   * <strong>socket_strerror()</strong>


id: socket_addrinfo_bind
type: function
doc:
<comment>Description:</comment>
  从给定的 addrinfo 创建并绑定一个套接字
  
  使用给定的 <class>AddressInfo</class> 创建并绑定一个 <class>Socket</class> 实例。此函数的返回值可以被 <strong>socket_listen()</strong> 使用。

<comment>Param:</comment>
  <info>AddressInfo</info>  <strong>$address</strong>  从 <strong>socket_addrinfo_lookup()</strong> 创建的 <class>AddressInfo</class> 实例。

<comment>Return:</comment>
  <info>Socket|false</info>  成功时返回一个 <class>Socket</class> 实例，失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>socket_addrinfo_connect()</strong>
   * <strong>socket_addrinfo_explain()</strong>
   * <strong>socket_addrinfo_lookup()</strong>
   * <strong>socket_listen()</strong>


id: socket_addrinfo_connect
type: function
doc:
<comment>Description:</comment>
  指定 addrinfo 创建并连接套接字
  
  创建 <class>Socket</class> 实例，并连接到 <class>AddressInfo</class> 实例。此函数的返回值可以和其余套接字函数一起使用。

<comment>Param:</comment>
  <info>AddressInfo</info>  <strong>$address</strong>  从 <strong>socket_addrinfo_lookup()</strong> 创建的 <class>AddressInfo</class> 实例。

<comment>Return:</comment>
  <info>Socket|false</info>  成功时返回 <class>Socket</class> 实例，失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>socket_addrinfo_bind()</strong>
   * <strong>socket_addrinfo_explain()</strong>
   * <strong>socket_addrinfo_lookup()</strong>


id: socket_addrinfo_explain
type: function
doc:
<comment>Description:</comment>
  获取有关 addrinfo 的信息
  
  <strong>socket_addrinfo_explain()</strong> 显露底层的 <return>addrinfo</return> 结构体。

<comment>Param:</comment>
  <info>AddressInfo</info>  <strong>$address</strong>  从 <strong>socket_addrinfo_lookup()</strong> 创建的 <class>AddressInfo</class> 实例。

<comment>Return:</comment>
  <info>array</info>  返回包含 <return>addrinfo</return> 结构体字段的数组。

<comment>See Also:</comment>
   * <strong>socket_addrinfo_bind()</strong>
   * <strong>socket_addrinfo_connect()</strong>
   * <strong>socket_addrinfo_lookup()</strong>


id: socket_addrinfo_lookup
type: function
doc:
<comment>Description:</comment>
  获取数组，包含有关给定主机名的 getaddrinfo 内容
  
  查找可以连接到 <strong>$host</strong> 的不同方式。返回的数组包含 <class>AddressInfo</class>  实例列表，可以使用
  <strong>socket_addrinfo_bind()</strong> 绑定这些实例。

<comment>Param:</comment>
  <info>string</info>       <strong>$host</strong>     搜索的主机名。
  <info>string|null</info>  <strong>$service</strong>  要连接的服务。如果 service 是字符串数字，它指定为端口号。否则指定的是一个网
                         络服务名称，会被操作系统映射到对应端口。
  <info>array</info>        <strong>$hints</strong>    Hints 提供了选择返回地址的标准。可以指定为由 getaddrinfo 定义的 hints 结
                         构。

<comment>Return:</comment>
  <info>array|false</info>  返回可以与其他 socket_addrinfo 函数一起使用的 <class>AddressInfo</class> 实例数组。失败时返回
               <info>false</info>。

<comment>See Also:</comment>
   * <strong>socket_addrinfo_bind()</strong>
   * <strong>socket_addrinfo_connect()</strong>
   * <strong>socket_addrinfo_explain()</strong>


id: socket_atmark
type: function
doc:
<comment>Description:</comment>
  确认 socket 是否处于带外数据标记
  
  确认 <strong>$socket</strong> 是否处于带外数据标记。

<comment>Param:</comment>
  <info>Socket</info>  <strong>$socket</strong>  使用 <strong>socket_create()</strong> 创建的 <class>Socket</class> 实例。

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>socket_connect()</strong>
   * <strong>socket_create()</strong>


id: socket_bind
type: function
doc:
<comment>Description:</comment>
  给套接字绑定名字
  
  绑定 <strong>$address</strong> 到 <strong>$socket</strong>。 该操作必须是在使用 <strong>socket_connect()</strong> 或者 <strong>socket_listen()</strong> 建立一个连接之
  前。

<comment>Param:</comment>
  <info>Socket</info>  <strong>$socket</strong>   用 <strong>socket_create()</strong> 创建的 <class>Socket</class> 实例。
  <info>string</info>  <strong>$address</strong>  如果套接字是 <info>AF_INET</info> 族，那么 <strong>$address</strong> 必须是一个四点分法的 IP 地址（例如
                    <return>127.0.0.1</return> ）。
                    
                    如果套接字是 <info>AF_UNIX</info> 族，那么 <strong>$address</strong> 是 Unix 域套接字的路径（例如 /tmp/my.sock
                    ）。
  <info>int</info>     <strong>$port</strong>     参数 <strong>$port</strong> 仅仅用于 <info>AF_INET</info> 套接字连接的时候，并且指定连接中需要监听的端口号。

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。
        
        使用 <strong>socket_last_error()</strong> 检索错误代码，如果将此代码传入 <strong>socket_strerror()</strong> 则可以得到错误的文
        字说明。

<comment>See Also:</comment>
   * <strong>socket_connect()</strong>
   * <strong>socket_listen()</strong>
   * <strong>socket_create()</strong>
   * <strong>socket_last_error()</strong>
   * <strong>socket_strerror()</strong>


id: socket_clear_error
type: function
doc:
<comment>Description:</comment>
  清除套接字或者最后的错误代码上的错误
  
  这个函数清除给定的套接字上的错误代码或是最后一个全局的套接字如果套接字没有指定的话。
  
  这个函数允许明确的重置错误代码值 不论是一个套接字或者最后全局错误代码的扩展， 这对在检测应用的一部
  分是否有错误发生是十分有用的。

<comment>Param:</comment>
  <info>Socket|null</info>  <strong>$socket</strong>  用 <strong>socket_create()</strong> 创建的 <class>Socket</class> 实例。

<comment>Return:</comment>
  <info>void</info>  没有返回值。

<comment>See Also:</comment>
   * <strong>socket_last_error()</strong>
   * <strong>socket_strerror()</strong>


id: socket_close
type: function
doc:
<comment>Description:</comment>
  关闭 Socket 实例
  
  <strong>socket_close()</strong> 会关闭由 <strong>$socket</strong> 参数指定的 <class>Socket</class> 实例。

<comment>Param:</comment>
  <info>Socket</info>  <strong>$socket</strong>  由 <strong>socket_create()</strong> 或者是 <strong>socket_accept()</strong> 创建的 <class>Socket</class> 实例。

<comment>Return:</comment>
  <info>void</info>  没有返回值。

<comment>See Also:</comment>
   * <strong>socket_bind()</strong>
   * <strong>socket_listen()</strong>
   * <strong>socket_create()</strong>
   * <strong>socket_strerror()</strong>


id: socket_cmsg_space
type: function
doc:
<comment>Description:</comment>
  Calculate message buffer size
  
  Calculates the size of the buffer that should be allocated for receiving the ancillary data.
  
  本函数还未编写文档，仅有参数列表。

<comment>Param:</comment>
  <info>int</info>  <strong>$level</strong>  
  <info>int</info>  <strong>$type</strong>   

<comment>Return:</comment>
  <info>int|null</info>  

<comment>See Also:</comment>
   * <strong>socket_recvmsg()</strong>
   * <strong>socket_sendmsg()</strong>


id: socket_connect
type: function
doc:
<comment>Description:</comment>
  开启一个套接字连接
  
  使用 <class>Socket</class> 实例 <strong>$socket</strong> 发起到 <strong>$address</strong> 的连接，该实例必须要求是用 <strong>socket_create()</strong> 创建的 <class>Socket</class>
  有效的套接字资源实例。

<comment>Param:</comment>
  <info>Socket</info>    <strong>$socket</strong>   由 <strong>socket_create()</strong> 创建的 <class>Socket</class> 实例。
  <info>string</info>    <strong>$address</strong>  如果参数 <strong>$socket</strong> 是 <info>AF_INET</info>，那么参数 <strong>$address</strong> 则可以是一个点分四组表示法（例
                      如 <return>127.0.0.1</return> ） 的 IPv4 地址；如果支持 IPv6 并且 <strong>$socket</strong> 是 <info>AF_INET6</info>，那么
                      <strong>$address</strong> 也可以是有效的 IPv6 地址（例如 <return>::1</return>）；如果套接字类型为 <info>AF_UNIX</info> ，那么
                      <strong>$address</strong> 也可以是一个 Unix 套接字。
  <info>int|null</info>  <strong>$port</strong>     参数 <strong>$port</strong> 仅仅用于 <info>AF_INET</info> 和 <info>AF_INET6</info> 套接字连接的时候，并且是在此情况下是需
                      要强制说明连接对应的远程服务器上的端口号。

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。 错误代码会传入 <strong>socket_last_error()</strong> ，如果将此参数
        传入 <strong>socket_strerror()</strong> 则可以得到错误的文字说明。
        
        如果套接字是非堵塞的，此函数将返回 <info>false</info> 并产生一个错误 <return>Operation now in progress</return>。

<comment>See Also:</comment>
   * <strong>socket_bind()</strong>
   * <strong>socket_listen()</strong>
   * <strong>socket_create()</strong>
   * <strong>socket_last_error()</strong>
   * <strong>socket_strerror()</strong>


id: socket_create
type: function
doc:
<comment>Description:</comment>
  创建一个套接字（通讯节点）
  
  创建并返回一个 <class>Socket</class> 实例，也称作一个通讯节点。一个典型的网络连接由 2 个套接字构成，一个运行在客
  户端，另一个运行在服务器端。

<comment>Param:</comment>
  <info>int</info>  <strong>$domain</strong>    <strong>$domain</strong> 参数指定哪个协议用在当前套接字上。
  <info>int</info>  <strong>$type</strong>      <strong>$type</strong> 参数用于选择套接字使用的类型。
  <info>int</info>  <strong>$protocol</strong>  <strong>$protocol</strong> 参数，是设置指定 <strong>$domain</strong>  套接字下的具体协议。这个值可以使用
                  <strong>getprotobyname()</strong> 函数进行读取。如果所需的协议是 TCP 或 UDP，可以直接使用常量
                  <info>SOL_TCP</info> 和 <info>SOL_UDP</info> 。

<comment>Return:</comment>
  <info>Socket|false</info>  <strong>socket_create()</strong> 正确时返回一个 <class>Socket</class> 实例，失败时返回 <info>false</info>。要读取错误代码，可以调
                用 <strong>socket_last_error()</strong>。这个错误代码可以通过 <strong>socket_strerror()</strong> 读取文字的错误说明。

<comment>See Also:</comment>
   * <strong>socket_accept()</strong>
   * <strong>socket_bind()</strong>
   * <strong>socket_connect()</strong>
   * <strong>socket_listen()</strong>
   * <strong>socket_last_error()</strong>
   * <strong>socket_strerror()</strong>


id: socket_create_listen
type: function
doc:
<comment>Description:</comment>
  在端口上打开一个套接字以接受连接
  
  <strong>socket_create_listen()</strong> 创建一个 <info>AF_INET</info> 类型的 <class>Socket</class>  实例，在所有本地接口上监听指定端口，等待新
  连接。
  
  此方法旨在简化创建新的套接字任务，仅监听且用于接受新连接。

<comment>Param:</comment>
  <info>int</info>  <strong>$port</strong>     监听所有接口的端口号
  <info>int</info>  <strong>$backlog</strong>  <strong>$backlog</strong> 参数定义了待处理的连接队列的最大长度。<info>SOMAXCONN</info>  可以作为 <strong>$backlog</strong> 参数，
                 详情见 <strong>socket_listen()</strong>。

<comment>Return:</comment>
  <info>Socket|false</info>  <strong>socket_create_listen()</strong> 成功时返回一个新的 <class>Socket</class>  实例，错误时返回 <info>false</info>。可以通过调
                用 <strong>socket_last_error()</strong>  来检索实际的错误码。将错误码作为参数传递给 <strong>socket_strerror()</strong>
                以获得错误的文本解释。

<comment>See Also:</comment>
   * <strong>socket_create()</strong>
   * <strong>socket_create_pair()</strong>
   * <strong>socket_bind()</strong>
   * <strong>socket_listen()</strong>
   * <strong>socket_last_error()</strong>
   * <strong>socket_strerror()</strong>


id: socket_create_pair
type: function
doc:
<comment>Description:</comment>
  创建一对彼此连接的套接字，并用数组存储
  
  <strong>socket_create_pair()</strong> 创建两个已连接的，彼此连接的套接字，并存储在 <strong>$pair</strong>  中。此函数通常在 IPC（进
  程间通信）使用。

<comment>Param:</comment>
  <info>int</info>    <strong>$domain</strong>    <strong>$domain</strong> 参数指定套接字使用的协议族。完整列表参见 <strong>socket_create()</strong>。
  <info>int</info>    <strong>$type</strong>      <strong>$type</strong> 参数选择套接字使用的通信类型。完整列表参见 <strong>socket_create()</strong>。
  <info>int</info>    <strong>$protocol</strong>  <strong>$domain</strong> 参数指定套接字在 <strong>$domain</strong>  协议族下通信时使用的具体协议。这个值可以通过
                    <strong>getprotobyname()</strong>  获取。如果所需的协议是 TCP 或 UDP，可以直接使用相应的常量
                    <info>SOL_TCP</info> 和 <info>SOL_UDP</info>。
                    
                    有关支持协议的完整列表，参见 <strong>socket_create()</strong>。
  <info>array</info>  <strong>$pair</strong>      包含两个 <class>Socket</class> 实例的引用数组。

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>socket_create()</strong>
   * <strong>socket_create_listen()</strong>
   * <strong>socket_bind()</strong>
   * <strong>socket_listen()</strong>
   * <strong>socket_last_error()</strong>
   * <strong>socket_strerror()</strong>


id: socket_export_stream
type: function
doc:
<comment>Description:</comment>
  Export a socket into a stream that encapsulates a socket
  
  本函数还未编写文档，仅有参数列表。

<comment>Param:</comment>
  <info>Socket</info>  <strong>$socket</strong>  

<comment>Return:</comment>
  <info>resource|false</info>  Return resource 或者在失败时返回 <info>false</info>.


id: socket_get_option
type: function
doc:
<comment>Description:</comment>
  获取套接字的套接字选项
  
  <strong>socket_get_option()</strong> 函数检索指定 <strong>$socket</strong>  中由 <strong>$option</strong> 参数指定的选项值。

<comment>Param:</comment>
  <info>Socket</info>  <strong>$socket</strong>  由 <strong>socket_create()</strong> 或 <strong>socket_accept()</strong>  创建的 <class>Socket</class> 实例。
  <info>int</info>     <strong>$level</strong>   <strong>$level</strong> 参数定义选项所在的协议级别。例如，在 socket 级别检索选项，将使用
                   <info>SOL_SOCKET</info>  作为 <strong>$level</strong> 参数值。在其它级别，例如 TCP，可以使用该级别指定的协议
                   号。协议号可以通过 <strong>getprotobyname()</strong>  获取。
  <info>int</info>     <strong>$option</strong>  <strong>$socket</strong> 执行 <strong>socket_close()</strong>  时是否滞留残留数据。默认情况下，当关闭 socket 时，将
                   尝试发送所有还未发送的数据。在面向连接的套接字中，<strong>socket_close()</strong>  会等待对端确认
                   接收数据。
                   
                   如果 l_onoff 不为零，且 l_linger  为零，对于面向连接的套接字，将丢弃所有未发送的
                   数据，并发送给对端一个 RST（reset）报文。
                   
                   另外，如果 l_onoff 不为零，且 l_linger  不为零，<strong>socket_close()</strong> 将阻塞，直到数据被
                   发送完或者超过 l_linger  指定的时间。如果 socket 设置为非阻塞，<strong>socket_close()</strong> 将
                   执行失败并返回错误。

<comment>Return:</comment>
  <info>array|int|false</info>  返回给定选项的值， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>socket_create_listen()</strong>
   * <strong>socket_set_option()</strong>


id: socket_get_status
type: function
doc:
<comment>Description:</comment>
  别名 stream_get_meta_data
  
  此函数是该函数的别名： <strong>stream_get_meta_data()</strong>。


id: socket_getopt
type: function
doc:
<comment>Description:</comment>
  别名 socket_get_option
  
  此函数是该函数的别名： <strong>socket_get_option()</strong>.


id: socket_getpeername
type: function
doc:
<comment>Description:</comment>
  获取套接字远端名字，返回主机名和端口号或是 Unix 文件系统路径，具体取决于套接字类型
  
  获取套接字远端名字，返回主机名和端口号或是 Unix 文件系统路径，具体取决于套接字类型。

<comment>Param:</comment>
  <info>Socket</info>  <strong>$socket</strong>   由 <strong>socket_create()</strong> 或 <strong>socket_accept()</strong> 创建的 <class>Socket</class> 实例。
  <info>string</info>  <strong>$address</strong>  如果给定套接字的类型是 <info>AF_INET</info>  或 <info>AF_INET6</info>，<strong>socket_getpeername()</strong>  将在参数
                    <strong>$address</strong> 上返回对端（远端） IP 地址  （例如：<return>127.0.0.1</return> 或 <return>fe80::1</return>），如果存在端
                    口号，也将关联到 <strong>$port</strong> 参数。
                    
                    如果给定套接字的类型是 <info>AF_UNIX</info>，<strong>socket_getpeername()</strong>  将在 <strong>$address</strong> 参数中返回
                    Unix 文件系统路径（例如：<return>/var/run/daemon.sock</return>）。
  <info>int</info>     <strong>$port</strong>     如果提供此参数，它将保存 <strong>$address</strong> 关联的端口号。

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。 如果套接字类型不是 <info>AF_INET</info>、<info>AF_INET6</info>  或 <info>AF_UNIX</info>
        中的任意一个，<strong>socket_getpeername()</strong>  也可能返回 <info>false</info>，在此情况下，套接字最后的错误码不会更
        新。

<comment>See Also:</comment>
   * <strong>socket_getsockname()</strong>
   * <strong>socket_last_error()</strong>
   * <strong>socket_strerror()</strong>


id: socket_getsockname
type: function
doc:
<comment>Description:</comment>
  获取套接字本地端的名字，返回主机名和端口号或是 Unix 文件系统路径，具体取决于套接字类型
  
  <strong>socket_getsockname()</strong> 不应该用于 <strong>socket_connect()</strong>  创建的 <info>AF_UNIX</info> 类型套接字。只有使用
  <strong>socket_accept()</strong>  创建的套接字或调用过 <strong>socket_bind()</strong> 的服务端套接字会返回有意义的值。

<comment>Param:</comment>
  <info>Socket</info>  <strong>$socket</strong>   由 <strong>socket_create()</strong> 或 <strong>socket_accept()</strong> 创建的 <class>Socket</class> 实例。
  <info>string</info>  <strong>$address</strong>  如果给定套接字的类型是 <info>AF_INET</info>  或 <info>AF_INET6</info>，<strong>socket_getsockname()</strong>  将在参数
                    <strong>$address</strong> 上返回本地 IP 地址  （例如：<return>127.0.0.1</return> 或 <return>fe80::1</return>），如果存在端口号，也
                    将关联到 <strong>$port</strong> 参数。
                    
                    如果给定套接字的类型是 <info>AF_UNIX</info>，<strong>socket_getsockname()</strong>  将在 <strong>$address</strong> 参数中返回
                    Unix 文件系统路径（例如：<return>/var/run/daemon.sock</return>）。
  <info>int</info>     <strong>$port</strong>     如果提供此参数，它将保存关联的端口号。

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。 如果套接字类型不是 <info>AF_INET</info>、<info>AF_INET6</info>  或 <info>AF_UNIX</info>
        中的任意一个，<strong>socket_getsockname()</strong>  也可能返回 <info>false</info>，在此情况下，套接字最后的错误码不会更
        新。

<comment>See Also:</comment>
   * <strong>socket_getpeername()</strong>
   * <strong>socket_last_error()</strong>
   * <strong>socket_strerror()</strong>


id: socket_import_stream
type: function
doc:
<comment>Description:</comment>
  导入 stream
  
  导入封装了 socket 的 stream 到 socket 扩展资源中。

<comment>Param:</comment>
  <info>resource</info>  <strong>$stream</strong>  要导入的 stream 资源。

<comment>Return:</comment>
  <info>Socket|false</info>  发生错误时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>stream_socket_server()</strong>


id: socket_last_error
type: function
doc:
<comment>Description:</comment>
  返回套接字上的最后一个错误
  
  如果将 <class>Socket</class> 实例传递给此函数，将会返回指定套接字发生的最后一个错误。如果 <strong>$socket</strong> 为 <info>null</info>, 则返回
  最后一个失败的套接字函数的错误码。此函数对以下情况特别有帮助： <strong>socket_create()</strong> 失败时不会返回套接
  字，以及 <strong>socket_select()</strong> 失败的原因与特定套接字没有直接联系。 错误码适合提供给 <strong>socket_strerror()</strong>，
  将返回指定错误码的字符串描述。
  
  如果没有错误或者已经使用 <strong>socket_clear_error()</strong> 清除了错误，则函数返回 <return>0</return>。

<comment>Param:</comment>
  <info>Socket|null</info>  <strong>$socket</strong>  通过 <strong>socket_create()</strong> 创建的 <class>Socket</class> 实例。

<comment>Return:</comment>
  <info>int</info>  此函数返回套接字错误码。


id: socket_listen
type: function
doc:
<comment>Description:</comment>
  监听套接字的连接
  
  <strong>socket_create()</strong> 创建套接字 <strong>$socket</strong>  并通过 <strong>socket_bind()</strong> 绑定名称后，可以监听 <strong>$socket</strong>  收到的连
  接。
  
  <strong>socket_listen()</strong> 仅适用于 <info>SOCK_STREAM</info>  或 <info>SOCK_SEQPACKET</info> 类型的套接字。

<comment>Param:</comment>
  <info>Socket</info>  <strong>$socket</strong>   由 <strong>socket_create()</strong> 或 <strong>socket_addrinfo_bind()</strong>  创建的套接字实例。
  <info>int</info>     <strong>$backlog</strong>  <strong>$backlog</strong> 指定处理连接请求队列的最大值。如果一个连接请求到达时队列已满，客户端可
                    能会收到 <return>ECONNREFUSED</return>  的错误提示。若底层协议支持重传，则忽略该请求，以便重试成
                    功。。
                    
                    传递给 <strong>$backlog</strong>  参数的最大值取决于底层平台。Linux 中，超过最大值将默认截取为
                    <info>SOMAXCONN</info>。win32 中，如果超过 <info>SOMAXCONN</info>  的值，负责套接字的底层服务将把 backlog
                    设置为最大的 reasonable  合理值，在此平台上，没有提供可以找到 backlog 实际值的标
                    准描述。

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。 可以通过 <strong>socket_last_error()</strong>  来检索错误码。将错
        误码作为参数传递给 <strong>socket_strerror()</strong> 以获得错误的文本解释。

<comment>See Also:</comment>
   * <strong>socket_accept()</strong>
   * <strong>socket_bind()</strong>
   * <strong>socket_connect()</strong>
   * <strong>socket_create()</strong>
   * <strong>socket_strerror()</strong>
   * <strong>socket_addrinfo_bind()</strong>


id: socket_read
type: function
doc:
<comment>Description:</comment>
  从套接字中读取最大长度的数据
  
  <strong>socket_read()</strong> 函数是从 <strong>socket_create()</strong> 或 <strong>socket_accept()</strong> 函数所创建的 <class>Socket</class> 实例 <strong>$socket</strong> 中读取
  数据。

<comment>Param:</comment>
  <info>Socket</info>  <strong>$socket</strong>  使用 <strong>socket_create()</strong> 或 <strong>socket_accept()</strong> 函数创建的 <class>Socket</class> 实例。
  <info>int</info>     <strong>$length</strong>  <strong>$length</strong> 参数指定了最大能够读取的字节数。否则您可以使用 <info>\r</info>、<info>\n</info>、<info>\0</info> 结束读取（根据
                   <strong>$mode</strong> 参数设置，请参见下文）。
  <info>int</info>     <strong>$mode</strong>    可选参数 <strong>$mode</strong> 是一个命名常量： <info>PHP_BINARY_READ</info> （默认）- 使用系统的 <return>recv()</return> 函
                   数。二进制安全地读取数据。 <info>PHP_NORMAL_READ</info> - 读取到 <return>\n</return>、<return>\r</return> 时停止。
                   
                   <info>PHP_BINARY_READ</info> （默认）- 使用系统的 <return>recv()</return> 函数。二进制安全地读取数据。
                   
                   <info>PHP_NORMAL_READ</info> - 读取到 <return>\n</return>、<return>\r</return> 时停止。

<comment>Return:</comment>
  <info>string|false</info>  <strong>socket_read()</strong> 返回一个字符串，表示接收到的数据。如果发生了错误（包括远程主机关闭了连
                接），则返回 <info>false</info>。错误码可使用 <strong>socket_last_error()</strong> 获取。也可使用
                <strong>socket_strerror()</strong> 来获取错误码的文字描述。
                
                当套接字中没有更多数据可读取时，<strong>socket_read()</strong> 返回一个长度为 0 的空字符串（""）。

<comment>See Also:</comment>
   * <strong>socket_accept()</strong>
   * <strong>socket_bind()</strong>
   * <strong>socket_connect()</strong>
   * <strong>socket_listen()</strong>
   * <strong>socket_last_error()</strong>
   * <strong>socket_strerror()</strong>
   * <strong>socket_write()</strong>


id: socket_recv
type: function
doc:
<comment>Description:</comment>
  从已连接的 socket 接收数据
  
  函数 <strong>socket_recv()</strong> 从 <strong>$socket</strong> 中接收长度为 <strong>$length</strong> 字节的数据，并保存在 <strong>$data</strong> 中。 <strong>socket_recv()</strong>
  用于从已连接的 socket 中接收数据。除此之外，可以设定一个或多个 flags 来控制函数的具体行为。
  
  <strong>$data</strong> 是传引用的，因此必须以变量的形式，指定到参数列表。从 <strong>$socket</strong> 中接收到的数据将会保存在 <strong>$data</strong>
  中。

<comment>Param:</comment>
  <info>Socket</info>       <strong>$socket</strong>  参数 <strong>$socket</strong> 必须是一个由 <strong>socket_create()</strong> 创建的 <class>Socket</class> 实例。
  <info>string|null</info>  <strong>$data</strong>    从 socket 中获取的数据将被保存在由 <strong>$data</strong> 指定的变量中。 如果有错误发生，如链
                        接被重置，数据不可用等等， <strong>$data</strong> 将被设为 <info>null</info>。
  <info>int</info>          <strong>$length</strong>  从远程主机接收长度最多为 <strong>$length</strong> 字节的数据。
  <info>int</info>          <strong>$flags</strong>   <strong>$flags</strong> 的值可以为下列任意 flag 的组合。使用按位或运算符(<return>|</return>)来 组合不同的
                        flag。

<comment>Return:</comment>
  <info>int|false</info>  <strong>socket_recv()</strong> 返回一个数字，表示接收到的字节数。如果发生了错误，则返回 <info>false</info> 错误码可使
             用 <strong>socket_last_error()</strong> 接收。也可使用函数 <strong>socket_strerror()</strong>  来取得关于错误的文字描述。


id: socket_recvfrom
type: function
doc:
<comment>Description:</comment>
  从套接字接收数据，无论它是否是面向连接的
  
  函数 <strong>socket_recvfrom()</strong> 使用 <strong>$socket</strong>  从 <strong>$address</strong> 的 <strong>$port</strong>  端口上接收 <strong>$length</strong> 字节数据到 <strong>$data</strong>  中
  （如果套接字不是 <info>AF_UNIX</info> 类型）。<strong>socket_recvfrom()</strong>  可用于从已连接或未连接的套接字上收集数据。另
  外，可以指定一个或多个标志来修改函数的行为。
  
  <strong>$address</strong> 和 <strong>$port</strong>  必须是引用传递。如果套接字不是面向连接的，<strong>$address</strong>  将设置为远程主机的互联网协
  议地址或 UNIX 套接字路径。如果套接字是面向连接的，<strong>$address</strong>  是 <info>null</info>。另外，在 <info>AF_INET</info> 或 <info>AF_INET6</info>
  套接字未连接的情况下，<strong>$port</strong> 将包含远程主机的端口号。
  
  此函数可安全用于二进制对象。

<comment>Param:</comment>
  <info>Socket</info>  <strong>$socket</strong>   <strong>$socket</strong> 必须是先前由 socket_create() 创建的 <class>Socket</class> 实例。
  <info>string</info>  <strong>$data</strong>     收到的数据将提取到 <strong>$data</strong> 指定的变量。
  <info>int</info>     <strong>$length</strong>   最多可从远程主机获取的 <strong>$length</strong> 字节数。
  <info>int</info>     <strong>$flags</strong>    <strong>$flags</strong> 的值可以是下列任意 flag 的组合。使用按位或运算符（<return>|</return>）来组合不同的 flag。
  <info>string</info>  <strong>$address</strong>  如果套接字是 <info>AF_UNIX</info> 类型，<strong>$address</strong>  是文件路径。否则，对于未连接的套接字，
                    <strong>$address</strong>  是远程主机的 IP 地址，如果套接字是面向连接的，是 <info>null</info>。
  <info>int</info>     <strong>$port</strong>     此参数只适用于 <info>AF_INET</info> 和 <info>AF_INET6</info>  类型的套接字，并指定接收数据的远程端口。如果
                    套接字是面向连接的，<strong>$port</strong>  是 <info>null</info>。

<comment>Return:</comment>
  <info>int|false</info>  <strong>socket_recvfrom()</strong> 返回接收到的字节数，发生错误时返回 <info>false</info>。可以通过调用
             <strong>socket_last_error()</strong>  来检索实际的错误代码。此错误码可以传递给 <strong>socket_strerror()</strong> 获得错
             误的文本解释。

<comment>See Also:</comment>
   * <strong>socket_recv()</strong>
   * <strong>socket_send()</strong>
   * <strong>socket_sendto()</strong>
   * <strong>socket_create()</strong>


id: socket_recvmsg
type: function
doc:
<comment>Description:</comment>
  Read a message
  
  本函数还未编写文档，仅有参数列表。

<comment>Param:</comment>
  <info>Socket</info>  <strong>$socket</strong>   
  <info>array</info>   <strong>$message</strong>  
  <info>int</info>     <strong>$flags</strong>    

<comment>Return:</comment>
  <info>int|false</info>  

<comment>See Also:</comment>
   * <strong>socket_sendmsg()</strong>
   * <strong>socket_cmsg_space()</strong>


id: socket_select
type: function
doc:
<comment>Description:</comment>
  从给定套接字数组运行带指定超时时间的 select() 系统调用
  
  <strong>socket_select()</strong> 接受套接字数组并等待其状态改变。如果拥有 BSD 套接字背景，会认识到这些套接字数组事
  实上被称为文件描述符集合。观察三个独立套接字数组。

<comment>Param:</comment>
  <info>array|null</info>  <strong>$read</strong>          <strong>$read</strong> 数组中列出要检查是否可读的套接字（更准确地说，查看读取是否会阻塞
                             -特别是套接字在 EOF 时也可以是就绪状态，此时 <strong>socket_read()</strong>  将会返回长
                             度为 0 的字符串。
  <info>array|null</info>  <strong>$write</strong>         <strong>$write</strong> 数组中列出要检查的写入是否阻塞的套接字。
  <info>array|null</info>  <strong>$except</strong>        <strong>$except</strong> 数组中列出要检查的是否异常的套接字。
  <info>int|null</info>    <strong>$seconds</strong>       <strong>$seconds</strong> 和 <strong>$microseconds</strong>  构成 <return>timeout</return> 参数。<return>timeout</return>  是
                             <strong>socket_select()</strong> 返回前的运行时间上限。<strong>$seconds</strong>  可以是 0，使
                             <strong>socket_select()</strong> 立即返回。这在轮询时很有用。如果 <strong>$seconds</strong>  是 <info>null</info>（不
                             会超时），<strong>socket_select()</strong> 会无限期阻塞。
  <info>int</info>         <strong>$microseconds</strong>  

<comment>Return:</comment>
  <info>int|false</info>  成功时 <strong>socket_select()</strong>  返回数组中被修改的套接字个数，如果超时则可能返回 0。失败时时返
             回 <info>false</info>。可以使用 <strong>socket_last_error()</strong>  检索错误码。
             
             确保使用 <return>===</return> 运算符来检查错误。因为 <strong>socket_select()</strong>  可能返回 0，使用 <return>==</return> 将被计算为
             <info>true</info>： 理解 <strong>socket_select()</strong> 的返回值
             ]]>

<comment>See Also:</comment>
   * <strong>socket_read()</strong>
   * <strong>socket_write()</strong>
   * <strong>socket_last_error()</strong>
   * <strong>socket_strerror()</strong>


id: socket_send
type: function
doc:
<comment>Description:</comment>
  向已连接的套接字发送数据
  
  <strong>socket_send()</strong> 从 <strong>$data</strong>  中发送 <strong>$length</strong> 字节到套接字 <strong>$socket</strong>

<comment>Param:</comment>
  <info>Socket</info>  <strong>$socket</strong>  由 <strong>socket_create()</strong> 或 <strong>socket_accept()</strong> 创建的 <class>Socket</class> 实例。
  <info>string</info>  <strong>$data</strong>    将要发送到远端主机的缓冲区数据。
  <info>int</info>     <strong>$length</strong>  要从 <strong>$data</strong> 发送到远端主机的字节数。
  <info>int</info>     <strong>$flags</strong>   <strong>$flags</strong> 的值可以是下列任意 flag 的组合。使用按位或运算符（<return>|</return>）来组合不同的 flag。
                   <strong>$flags</strong> 可用值<info>MSG_OOB</info> 发送 OOB（带外）数据。 <info>MSG_EOR</info> 逻辑记录标记。发送的数据结束
                   一个逻辑记录。 <info>MSG_EOF</info> 从发送方关闭套接字，并在指定数据末尾设置结束标识。发送数据
                   后结束事务。 <info>MSG_DONTROUTE</info> 绕过路由，直接使用接口。

<comment>Return:</comment>
  <info>int|false</info>  <strong>socket_send()</strong> 返回发送的字节数，发生错误时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>socket_sendto()</strong>


id: socket_sendmsg
type: function
doc:
<comment>Description:</comment>
  Send a message
  
  本函数还未编写文档，仅有参数列表。

<comment>Param:</comment>
  <info>Socket</info>  <strong>$socket</strong>   
  <info>array</info>   <strong>$message</strong>  
  <info>int</info>     <strong>$flags</strong>    

<comment>Return:</comment>
  <info>int|false</info>  Returns the number of bytes sent,  或者在失败时返回 <info>false</info>.

<comment>See Also:</comment>
   * <strong>socket_recvmsg()</strong>
   * <strong>socket_cmsg_space()</strong>


id: socket_sendto
type: function
doc:
<comment>Description:</comment>
  向套接字发送消息，无论它是否已建立连接
  
  函数 <strong>socket_sendto()</strong> 通过套接字 <strong>$socket</strong>  从参数 <strong>$data</strong> 中发送 <strong>$length</strong>  指定的字节数到 <strong>$address</strong> 地址
  的 <strong>$port</strong> 端口。

<comment>Param:</comment>
  <info>Socket</info>    <strong>$socket</strong>   由 <strong>socket_create()</strong> 创建的 <class>Socket</class> 实例。
  <info>string</info>    <strong>$data</strong>     要从 <strong>$data</strong> 缓冲区发送的数据。
  <info>int</info>       <strong>$length</strong>   <strong>$data</strong> 中要发送的 <strong>$length</strong> 长度的字节数。
  <info>int</info>       <strong>$flags</strong>    <strong>$flags</strong> 的值可以是下列任意 flag 的组合。使用按位或运算符（<return>|</return>）来组合不同的
                      flag。 <strong>$flags</strong> 可用值<info>MSG_OOB</info> 发送 OOB（带外）数据。 <info>MSG_EOR</info> 逻辑记录标记。发送
                      的数据结束一个逻辑记录。 <info>MSG_EOF</info> 从发送方关闭套接字，并在指定数据末尾设置结束
                      标识。发送数据后结束事务。 <info>MSG_DONTROUTE</info> 绕过路由，直接使用接口。
  <info>string</info>    <strong>$address</strong>  远端 IP 地址。
  <info>int|null</info>  <strong>$port</strong>     <strong>$port</strong> 是数据要被发送到的远端端口号。

<comment>Return:</comment>
  <info>int|false</info>  <strong>socket_sendto()</strong> 返回发送到远端地址的字节数。发生错误时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>socket_send()</strong>


id: socket_set_block
type: function
doc:
<comment>Description:</comment>
  设置套接字为阻塞模式
  
  <strong>socket_set_block()</strong> 函数移除了由 <strong>$socket</strong>  参数定义的 <info>O_NONBLOCK</info> 标记。
  
  当一个操作（例如接收、发送、连接、接受连接……）在一个阻塞套接字上执行时，脚本在接受到信号或者可以执
  行此操作前将暂停执行。

<comment>Param:</comment>
  <info>Socket</info>  <strong>$socket</strong>  由 <strong>socket_create()</strong> 或 <strong>socket_accept()</strong>  创建的 <class>Socket</class> 实例。

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>socket_set_nonblock()</strong>
   * <strong>socket_set_option()</strong>


id: socket_set_blocking
type: function
doc:
<comment>Description:</comment>
  别名 stream_set_blocking
  
  此函数是该函数的别名：  <strong>stream_set_blocking()</strong>。


id: socket_set_nonblock
type: function
doc:
<comment>Description:</comment>
  设置套接字为非阻塞模式
  
  <strong>socket_set_nonblock()</strong> 为由 <strong>$socket</strong>  参数指定的套接字设置 <info>O_NONBLOCK</info> 标记。
  
  当一个操作（例如接收、发送、连接、接受连接……）在一个非阻塞套接字上执行时，脚本在接受到信号或操作处
  理完成前都不会暂停执行。如果操作会导致阻塞，被调用的函数将失败。

<comment>Param:</comment>
  <info>Socket</info>  <strong>$socket</strong>  由 <strong>socket_create()</strong> 或 <strong>socket_accept()</strong>  创建的 <class>Socket</class> 实例。

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>socket_set_block()</strong>
   * <strong>socket_set_option()</strong>
   * <strong>stream_set_blocking()</strong>


id: socket_set_option
type: function
doc:
<comment>Description:</comment>
  为套接字设置套接字选项
  
  <strong>socket_set_option()</strong> 函数在 <strong>$socket</strong>  的指定协议 <strong>$level</strong> 上设置由 <strong>$option</strong>  参数指定的选项，<strong>$value</strong> 为
  指定值。

<comment>Param:</comment>
  <info>Socket</info>            <strong>$socket</strong>  由 <strong>socket_create()</strong> 或 <strong>socket_accept()</strong> 创建的 <class>Socket</class> 实例。
  <info>int</info>               <strong>$level</strong>   <strong>$level</strong> 参数定义选项所在的协议级别。例如，在 socket 级别设置选项，将使用
                             <info>SOL_SOCKET</info>  作为 <strong>$level</strong> 参数。在其它级别，例如 TCP，可以使用该级别定义
                             的协议号来指定级别。协议号可以通过 <strong>getprotobyname()</strong>  找到。
  <info>int</info>               <strong>$option</strong>  套接字可用选项与 <strong>socket_get_option()</strong> 函数的选项相同。
  <info>array|string|int</info>  <strong>$value</strong>   选项值。

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>socket_create()</strong>
   * <strong>socket_bind()</strong>
   * <strong>socket_strerror()</strong>
   * <strong>socket_last_error()</strong>
   * <strong>socket_get_option()</strong>


id: socket_set_timeout
type: function
doc:
<comment>Description:</comment>
  别名 stream_set_timeout
  
  此函数是该函数的别名： <strong>stream_set_timeout()</strong>。


id: socket_setopt
type: function
doc:
<comment>Description:</comment>
  别名 socket_set_option
  
  此函数是该函数的别名： <strong>socket_set_option()</strong>.


id: socket_shutdown
type: function
doc:
<comment>Description:</comment>
  关闭套接字接收或发送，或两者都关闭
  
  <strong>socket_shutdown()</strong> 函数允许通过 <strong>$socket</strong> 停止接收、发送或所有数据（默认）。
  
  关联的一个或多个缓冲区可能会清空，也可能不会。

<comment>Param:</comment>
  <info>Socket</info>  <strong>$socket</strong>  从 <strong>socket_create()</strong> 创建的 <class>Socket</class> 实例。
  <info>int</info>     <strong>$mode</strong>    <strong>$mode</strong> 的值可以是以下之一： <strong>$mode</strong> 可用值<return>0</return> 关闭套接字读 <return>1</return> 关闭套接字写 <return>2</return> 关闭套接字
                   读和写

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。


id: socket_strerror
type: function
doc:
<comment>Description:</comment>
  返回描述套接字错误的字符串
  
  <strong>socket_strerror()</strong> 将 <strong>socket_last_error()</strong>  返回的套接字错误码作为 <strong>$error_code</strong> 参数，返回对应的文本
  解释。
  
  虽然 socket 扩展生成的错误信息使用的是英语，但此方法会根据当前语言环境（<info>LC_MESSAGES</info>） 展示检索到的
  系统消息。

<comment>Param:</comment>
  <info>int</info>  <strong>$error_code</strong>  可能从 <strong>socket_last_error()</strong> 产生的套接字错误码。

<comment>Return:</comment>
  <info>string</info>  返回与 <strong>$error_code</strong> 参数相关的错误信息。

<comment>See Also:</comment>
   * <strong>socket_accept()</strong>
   * <strong>socket_bind()</strong>
   * <strong>socket_connect()</strong>
   * <strong>socket_listen()</strong>
   * <strong>socket_create()</strong>


id: socket_write
type: function
doc:
<comment>Description:</comment>
  向套接字写数据
  
  函数 <strong>socket_write()</strong> 向 <strong>$socket</strong>  写入 <strong>$data</strong>。

<comment>Param:</comment>
  <info>Socket</info>    <strong>$socket</strong>  
  <info>string</info>    <strong>$data</strong>    要写入到缓冲区的数据。
  <info>int|null</info>  <strong>$length</strong>  可选参数 <strong>$length</strong> 可以指定写入 socket  的字节长度。如果写入的字节长度大于缓冲区
                     长度，默认将被截取为缓冲区长度。

<comment>Return:</comment>
  <info>int|false</info>  返回成功写入 socket 的字节数 或者在失败时返回 <info>false</info>。可以通过调用 <strong>socket_last_error()</strong>
             来检索实际的错误码。将错误码作为参数传递给 <strong>socket_strerror()</strong> 以获得错误的文本解释。
             
             对于 <strong>socket_wirte()</strong> 来说返回 0 是完全有效的，这代表没有字节被写入。如果发生错误，务必使
             用 <return>===</return>  运算符来判断是否为 <info>false</info>。

<comment>See Also:</comment>
   * <strong>socket_accept()</strong>
   * <strong>socket_bind()</strong>
   * <strong>socket_connect()</strong>
   * <strong>socket_listen()</strong>
   * <strong>socket_read()</strong>
   * <strong>socket_strerror()</strong>


id: socket_wsaprotocol_info_export
type: function
doc:
<comment>Description:</comment>
  导出 WSAPROTOCOL_INFO 结构体
  
  导出 <return>WSAPROTOCOL_INFO</return> 结构体到共享内存中，并返回 <strong>socket_wsaprotocol_info_import()</strong>  使用的标识符。
  导出的 ID 仅对给定参数 <strong>$process_id</strong> 指定的进程有效。
  
  此方法仅在 Windows 上可用。

<comment>Param:</comment>
  <info>Socket</info>  <strong>$socket</strong>      <class>Socket</class> 实例。
  <info>int</info>     <strong>$process_id</strong>  将要导入套接字的进程 ID。

<comment>Return:</comment>
  <info>string|false</info>  返回用于导入的标识符， 或者在失败时返回 <info>false</info>

<comment>See Also:</comment>
   * <strong>socket_wsaprotocol_info_import()</strong>
   * <strong>socket_wsaprotocol_info_release()</strong>


id: socket_wsaprotocol_info_import
type: function
doc:
<comment>Description:</comment>
  从另一个进程导入套接字
  
  导入之前从另一个进程导出的套接字。
  
  此方法仅在 Windows 上可用。

<comment>Param:</comment>
  <info>string</info>  <strong>$info_id</strong>  调用 <strong>socket_wsaprotocol_info_export()</strong> 返回的 ID。

<comment>Return:</comment>
  <info>Socket|false</info>  成功时返回 <class>Socket</class> 实例， 或者在失败时返回 <info>false</info>

<comment>See Also:</comment>
   * <strong>socket_wsaprotocol_info_export()</strong>


id: socket_wsaprotocol_info_release
type: function
doc:
<comment>Description:</comment>
  释放已导出的 WSAPROTOCOL_INFO 结构体
  
  释放 <strong>$info_id</strong> 对应的共享内存。
  
  此方法仅在 Windows 上可用。

<comment>Param:</comment>
  <info>string</info>  <strong>$info_id</strong>  调用 <strong>socket_wsaprotocol_info_export()</strong> 返回的 ID。

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>socket_wsaprotocol_info_export()</strong>


id: sodium_add
type: function
doc:
<comment>Description:</comment>
  Add large numbers
  
  This adds the parameter <strong>$string2</strong> to <strong>$string1</strong>, overwriting the value stored in <strong>$string1</strong>. This
  function assumes both parameters are binary strings that represent unsigned integers in
  little-endian byte order.

<comment>Param:</comment>
  <info>string</info>  <strong>$string1</strong>  String representing an arbitrary-length unsigned integer in little-endian byte
                    order. This parameter is passed by reference and will hold the sum of the two
                    parameters.
  <info>string</info>  <strong>$string2</strong>  String representing an arbitrary-length unsigned integer in little-endian byte
                    order.

<comment>Return:</comment>
  <info>void</info>  没有返回值。


id: sodium_base642bin
type: function
doc:
<comment>Description:</comment>
  Decodes a base64-encoded string into raw binary.
  
  Converts a base64 encoded string into raw binary. Unlike <strong>base64_decode()</strong>, <strong>sodium_base642bin()</strong> is
  constant-time (a property that is important for any code that touches cryptographic inputs, such
  as plaintexts or keys) and supports multiple character sets.

<comment>Param:</comment>
  <info>string</info>  <strong>$string</strong>  <info>string</info>; Encoded string.
  <info>int</info>     <strong>$id</strong>      <info>SODIUM_BASE64_VARIANT_ORIGINAL</info> for standard (<return>A-Za-z0-9/\+</return>) Base64 encoding.
                   <info>SODIUM_BASE64_VARIANT_ORIGINAL_NO_PADDING</info> for standard (<return>A-Za-z0-9/\+</return>) Base64
                   encoding, without <return>=</return> padding characters. <info>SODIUM_BASE64_VARIANT_URLSAFE</info> for
                   URL-safe (<return>A-Za-z0-9\-_</return>) Base64 encoding. <info>SODIUM_BASE64_VARIANT_URLSAFE_NO_PADDING</info>
                   for URL-safe (<return>A-Za-z0-9\-_</return>) Base64 encoding, without <return>=</return> padding characters.
  <info>string</info>  <strong>$ignore</strong>  Characters to ignore when decoding (e.g. whitespace characters).

<comment>Return:</comment>
  <info>string</info>  Decoded string.


id: sodium_bin2base64
type: function
doc:
<comment>Description:</comment>
  Encodes a raw binary string with base64.
  
  Converts a raw binary string into a base64-encoded string. Unlike <strong>base64_encode()</strong>,
  <strong>sodium_bin2base64()</strong> is constant-time (a property that is important for any code that touches
  cryptographic inputs, such as plaintexts or keys) and supports multiple character sets.

<comment>Param:</comment>
  <info>string</info>  <strong>$string</strong>  Raw binary string.
  <info>int</info>     <strong>$id</strong>      <info>SODIUM_BASE64_VARIANT_ORIGINAL</info> for standard (<return>A-Za-z0-9/\+</return>) Base64 encoding.
                   <info>SODIUM_BASE64_VARIANT_ORIGINAL_NO_PADDING</info> for standard (<return>A-Za-z0-9/\+</return>) Base64
                   encoding, without <return>=</return> padding characters. <info>SODIUM_BASE64_VARIANT_URLSAFE</info> for
                   URL-safe (<return>A-Za-z0-9\-_</return>) Base64 encoding. <info>SODIUM_BASE64_VARIANT_URLSAFE_NO_PADDING</info>
                   for URL-safe (<return>A-Za-z0-9\-_</return>) Base64 encoding, without <return>=</return> padding characters.

<comment>Return:</comment>
  <info>string</info>  Base64-encoded string.


id: sodium_bin2hex
type: function
doc:
<comment>Description:</comment>
  Encode to hexadecimal
  
  Converts a raw binary string into a hex-encoded string. Unlike the standard hex-encoding function,
  <strong>sodium_bin2hex()</strong> is constant-time (a property that is important for any code that touches
  cryptographic inputs, such as plaintexts or keys).

<comment>Param:</comment>
  <info>string</info>  <strong>$string</strong>  Raw binary string.

<comment>Return:</comment>
  <info>string</info>  Hex encoded string.


id: sodium_compare
type: function
doc:
<comment>Description:</comment>
  Compare large numbers
  
  Compare two strings as if they were arbitrary-length, unsigned little-endian integers, without
  side-channel leakage.

<comment>Param:</comment>
  <info>string</info>  <strong>$string1</strong>  Left operand
  <info>string</info>  <strong>$string2</strong>  Right operand

<comment>Return:</comment>
  <info>int</info>  Returns <return>-1</return> if <strong>$string1</strong> is less than <strong>$string2</strong>.
       
       Returns <return>1</return> if <strong>$string1</strong> is greater than <strong>$string2</strong>.
       
       Returns <return>0</return> if both strings are equal.


id: sodium_crypto_aead_aes256gcm_decrypt
type: function
doc:
<comment>Description:</comment>
  Verify then decrypt a message with AES-256-GCM
  
  Verify then decrypt with AES-256-GCM. Only available if
  <strong>sodium_crypto_aead_aes256gcm_is_available()</strong> returns <info>true</info>.

<comment>Param:</comment>
  <info>string</info>  <strong>$ciphertext</strong>       Must be in the format provided by <strong>sodium_crypto_aead_aes256gcm_encrypt()</strong>
                            (ciphertext and tag, concatenated).
  <info>string</info>  <strong>$additional_data</strong>  Additional, authenticated data. This is used in the verification of the
                            authentication tag appended to the ciphertext, but it is not encrypted
                            or stored in the ciphertext.
  <info>string</info>  <strong>$nonce</strong>            A number that must be only used once, per message. 12 bytes long.
  <info>string</info>  <strong>$key</strong>              Encryption key (256-bit).

<comment>Return:</comment>
  <info>string|false</info>  Returns the plaintext on success,  或者在失败时返回 <info>false</info>.


id: sodium_crypto_aead_aes256gcm_encrypt
type: function
doc:
<comment>Description:</comment>
  Encrypt then authenticate with AES-256-GCM
  
  Encrypt then authenticate with AES-256-GCM. Only available if
  <strong>sodium_crypto_aead_aes256gcm_is_available()</strong> returns <info>true</info>.

<comment>Param:</comment>
  <info>string</info>  <strong>$message</strong>          The plaintext message to encrypt.
  <info>string</info>  <strong>$additional_data</strong>  Additional, authenticated data. This is used in the verification of the
                            authentication tag appended to the ciphertext, but it is not encrypted
                            or stored in the ciphertext.
  <info>string</info>  <strong>$nonce</strong>            A number that must be only used once, per message. 12 bytes long.
  <info>string</info>  <strong>$key</strong>              Encryption key (256-bit).

<comment>Return:</comment>
  <info>string</info>  Returns the ciphertext and authentication tag as a string of raw binary bytes. (Format:
          ciphertext, then tag.)


id: sodium_crypto_aead_aes256gcm_is_available
type: function
doc:
<comment>Description:</comment>
  Check if hardware supports AES256-GCM
  
  The return value of this function depends on whether or not the hardware supports
  hardware-accelerated AES.

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info> if it is safe to encrypt with AES-256-GCM, and <info>false</info> otherwise.


id: sodium_crypto_aead_aes256gcm_keygen
type: function
doc:
<comment>Description:</comment>
  Generate a random AES-256-GCM key
  
  Generate a random key for use with <strong>sodium_crypto_aead_aes256gcm_encrypt()</strong> and
  <strong>sodium_crypto_aead_aes256gcm_decrypt()</strong>.

<comment>Return:</comment>
  <info>string</info>  Returns a 256-bit random key.


id: sodium_crypto_aead_chacha20poly1305_decrypt
type: function
doc:
<comment>Description:</comment>
  Verify then decrypt with ChaCha20-Poly1305
  
  Verify then decrypt with ChaCha20-Poly1305.

<comment>Param:</comment>
  <info>string</info>  <strong>$ciphertext</strong>       Must be in the format provided by
                            <strong>sodium_crypto_aead_chacha20poly1305_encrypt()</strong> (ciphertext and tag,
                            concatenated).
  <info>string</info>  <strong>$additional_data</strong>  Additional, authenticated data. This is used in the verification of the
                            authentication tag appended to the ciphertext, but it is not encrypted
                            or stored in the ciphertext.
  <info>string</info>  <strong>$nonce</strong>            A number that must be only used once, per message. 8 bytes long.
  <info>string</info>  <strong>$key</strong>              Encryption key (256-bit).

<comment>Return:</comment>
  <info>string|false</info>  Returns the plaintext on success,  或者在失败时返回 <info>false</info>.


id: sodium_crypto_aead_chacha20poly1305_encrypt
type: function
doc:
<comment>Description:</comment>
  Encrypt then authenticate with ChaCha20-Poly1305
  
  Encrypt then authenticate with ChaCha20-Poly1305.

<comment>Param:</comment>
  <info>string</info>  <strong>$message</strong>          The plaintext message to encrypt.
  <info>string</info>  <strong>$additional_data</strong>  Additional, authenticated data. This is used in the verification of the
                            authentication tag appended to the ciphertext, but it is not encrypted
                            or stored in the ciphertext.
  <info>string</info>  <strong>$nonce</strong>            A number that must be only used once, per message. 8 bytes long.
  <info>string</info>  <strong>$key</strong>              Encryption key (256-bit).

<comment>Return:</comment>
  <info>string</info>  Returns the ciphertext and tag on success,  或者在失败时返回 <info>false</info>.


id: sodium_crypto_aead_chacha20poly1305_ietf_decrypt
type: function
doc:
<comment>Description:</comment>
  Verify that the ciphertext includes a valid tag
  
  Verify then decrypt with ChaCha20-Poly1305 (IETF variant).
  
  The IETF variant uses 96-bit nonces and 32-bit internal counters, instead of 64-bit for both.

<comment>Param:</comment>
  <info>string</info>  <strong>$ciphertext</strong>       Must be in the format provided by
                            <strong>sodium_crypto_aead_chacha20poly1305_ietf_encrypt()</strong> (ciphertext and tag,
                            concatenated).
  <info>string</info>  <strong>$additional_data</strong>  Additional, authenticated data. This is used in the verification of the
                            authentication tag appended to the ciphertext, but it is not encrypted
                            or stored in the ciphertext.
  <info>string</info>  <strong>$nonce</strong>            A number that must be only used once, per message. 12 bytes long.
  <info>string</info>  <strong>$key</strong>              Encryption key (256-bit).

<comment>Return:</comment>
  <info>string|false</info>  Returns the plaintext on success,  或者在失败时返回 <info>false</info>.


id: sodium_crypto_aead_chacha20poly1305_ietf_encrypt
type: function
doc:
<comment>Description:</comment>
  Encrypt a message
  
  Encrypt then authenticate with ChaCha20-Poly1305 (IETF variant).
  
  The IETF variant uses 96-bit nonces and 32-bit internal counters, instead of 64-bit for both.

<comment>Param:</comment>
  <info>string</info>  <strong>$message</strong>          The plaintext message to encrypt.
  <info>string</info>  <strong>$additional_data</strong>  Additional, authenticated data. This is used in the verification of the
                            authentication tag appended to the ciphertext, but it is not encrypted
                            or stored in the ciphertext.
  <info>string</info>  <strong>$nonce</strong>            A number that must be only used once, per message. 12 bytes long.
  <info>string</info>  <strong>$key</strong>              Encryption key (256-bit).

<comment>Return:</comment>
  <info>string</info>  Returns the ciphertext and tag on success,  或者在失败时返回 <info>false</info>.


id: sodium_crypto_aead_chacha20poly1305_ietf_keygen
type: function
doc:
<comment>Description:</comment>
  Generate a random ChaCha20-Poly1305 (IETF) key.
  
  Generate a random key for use with <strong>sodium_crypto_aead_chacha20poly1305_ietf_encrypt()</strong> and
  <strong>sodium_crypto_aead_chacha20poly1305_ietf_decrypt()</strong>.

<comment>Return:</comment>
  <info>string</info>  Returns a 256-bit random key.


id: sodium_crypto_aead_chacha20poly1305_keygen
type: function
doc:
<comment>Description:</comment>
  Generate a random ChaCha20-Poly1305 key.
  
  Generate a random key for use with <strong>sodium_crypto_aead_chacha20poly1305_encrypt()</strong> and
  <strong>sodium_crypto_aead_chacha20poly1305_decrypt()</strong>.

<comment>Return:</comment>
  <info>string</info>  Returns a 256-bit random key.


id: sodium_crypto_aead_xchacha20poly1305_ietf_decrypt
type: function
doc:
<comment>Description:</comment>
  (Preferred) Verify then decrypt with XChaCha20-Poly1305
  
  Verify then decrypt with ChaCha20-Poly1305 (eXtended-nonce variant).
  
  Generally, XChaCha20-Poly1305 is the best of the provided AEAD modes to use.

<comment>Param:</comment>
  <info>string</info>  <strong>$ciphertext</strong>       Must be in the format provided by
                            <strong>sodium_crypto_aead_chacha20poly1305_ietf_encrypt()</strong> (ciphertext and tag,
                            concatenated).
  <info>string</info>  <strong>$additional_data</strong>  Additional, authenticated data. This is used in the verification of the
                            authentication tag appended to the ciphertext, but it is not encrypted
                            or stored in the ciphertext.
  <info>string</info>  <strong>$nonce</strong>            A number that must be only used once, per message. 24 bytes long. This
                            is a large enough bound to generate randomly (i.e. <strong>random_bytes()</strong>).
  <info>string</info>  <strong>$key</strong>              Encryption key (256-bit).

<comment>Return:</comment>
  <info>string|false</info>  Returns the plaintext on success,  或者在失败时返回 <info>false</info>.


id: sodium_crypto_aead_xchacha20poly1305_ietf_encrypt
type: function
doc:
<comment>Description:</comment>
  (Preferred) Encrypt then authenticate with XChaCha20-Poly1305
  
  Encrypt then authenticate with XChaCha20-Poly1305 (eXtended-nonce variant).
  
  Generally, XChaCha20-Poly1305 is the best of the provided AEAD modes to use.

<comment>Param:</comment>
  <info>string</info>  <strong>$message</strong>          The plaintext message to encrypt.
  <info>string</info>  <strong>$additional_data</strong>  Additional, authenticated data. This is used in the verification of the
                            authentication tag appended to the ciphertext, but it is not encrypted
                            or stored in the ciphertext.
  <info>string</info>  <strong>$nonce</strong>            A number that must be only used once, per message. 24 bytes long. This
                            is a large enough bound to generate randomly (i.e. <strong>random_bytes()</strong>).
  <info>string</info>  <strong>$key</strong>              Encryption key (256-bit).

<comment>Return:</comment>
  <info>string</info>  Returns the ciphertext and tag on success,  或者在失败时返回 <info>false</info>.


id: sodium_crypto_aead_xchacha20poly1305_ietf_keygen
type: function
doc:
<comment>Description:</comment>
  Generate a random XChaCha20-Poly1305 key.
  
  Generate a random key for use with <strong>sodium_crypto_aead_xchacha20poly1305_ietf_encrypt()</strong> and
  <strong>sodium_crypto_aead_xchacha20poly1305_ietf_decrypt()</strong>.

<comment>Return:</comment>
  <info>string</info>  Returns a 256-bit random key.


id: sodium_crypto_auth
type: function
doc:
<comment>Description:</comment>
  Compute a tag for the message
  
  Symmetric message authentication via <strong>sodium_crypto_auth()</strong> provides integrity, but not
  confidentiality.
  
  Unlike with digital signatures (e.g. <strong>sodium_crypto_sign_detached()</strong>), any party capable of
  verifying a message is also capable of authenticating their own messages. (Hence, symmetric
  authentication.)

<comment>Param:</comment>
  <info>string</info>  <strong>$message</strong>  The message you intend to authenticate
  <info>string</info>  <strong>$key</strong>      Authentication key

<comment>Return:</comment>
  <info>string</info>  Authentication tag


id: sodium_crypto_auth_keygen
type: function
doc:
<comment>Description:</comment>
  Generate a random key for sodium_crypto_auth
  
  Generate a key for use with <strong>sodium_crypto_auth()</strong> and <strong>sodium_crypto_auth_verify()</strong>.

<comment>Return:</comment>
  <info>string</info>  Returns a 256-bit random key.


id: sodium_crypto_auth_verify
type: function
doc:
<comment>Description:</comment>
  Verifies that the tag is valid for the message
  
  Verify the authentication tag is valid for a given message and key.
  
  Unlike with digital signatures (e.g. <strong>sodium_crypto_sign_verify_detached()</strong>), any party capable of
  verifying a message is also capable of authenticating their own messages. (Hence, symmetric
  authentication.)

<comment>Param:</comment>
  <info>string</info>  <strong>$mac</strong>      Authentication tag produced by <strong>sodium_crypto_auth()</strong>
  <info>string</info>  <strong>$message</strong>  Message
  <info>string</info>  <strong>$key</strong>      Authentication key

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。


id: sodium_crypto_box
type: function
doc:
<comment>Description:</comment>
  Authenticated public-key encryption
  
  Encrypt a message using asymmetric (public key) cryptography.
  
  The algorithm used by functions prefixed with <strong>sodium_crypto_box()</strong> are Elliptic Curve
  Diffie-Hellman over the Montgomery curve, Curve25519; usually abbreviated as X25519.

<comment>Param:</comment>
  <info>string</info>  <strong>$message</strong>   The message to be encrypted.
  <info>string</info>  <strong>$nonce</strong>     A number that must be only used once, per message. 24 bytes long. This is a
                     large enough bound to generate randomly (i.e. <strong>random_bytes()</strong>).
  <info>string</info>  <strong>$key_pair</strong>  See <strong>sodium_crypto_box_keypair_from_secretkey_and_publickey()</strong>. This should
                     include the sender's X25519 secret key and the recipient's X25519 public key.

<comment>Return:</comment>
  <info>string</info>  Returns the encrypted message (ciphertext plus authentication tag). The ciphertext will be
          16 bytes longer than the plaintext, and a raw binary string. See <strong>sodium_bin2base64()</strong> for
          safe encoding for storage.


id: sodium_crypto_box_keypair
type: function
doc:
<comment>Description:</comment>
  Randomly generate a secret key and a corresponding public key
  
  Generates a secret key and a public key as one string.
  
  To get the secret key out of this unified keypair string, see <strong>sodium_crypto_box_secretkey()</strong>. To
  get the public key out of this unified keypair string, see <strong>sodium_crypto_box_publickey()</strong>.

<comment>Return:</comment>
  <info>string</info>  One string containing both the X25519 secret key and corresponding X25519 public key.


id: sodium_crypto_box_keypair_from_secretkey_and_publickey
type: function
doc:
<comment>Description:</comment>
  Create a unified keypair string from a secret key and public key
  
  This function exists to satisfy the API requirements of e.g. <strong>crypto_box()</strong>. Pass in one party's
  secret key and the other's public key, and you will obtain a "keypair" for your conversation.

<comment>Param:</comment>
  <info>string</info>  <strong>$secret_key</strong>  Secret key.
  <info>string</info>  <strong>$public_key</strong>  Public key.

<comment>Return:</comment>
  <info>string</info>  X25519 Keypair.


id: sodium_crypto_box_open
type: function
doc:
<comment>Description:</comment>
  Authenticated public-key decryption
  
  Decrypt a message using asymmetric (public key) cryptography.

<comment>Param:</comment>
  <info>string</info>  <strong>$ciphertext</strong>  The encrypted message to attempt to decrypt.
  <info>string</info>  <strong>$nonce</strong>       A number that must be only used once, per message. 24 bytes long. This is a
                       large enough bound to generate randomly (i.e. <strong>random_bytes()</strong>).
  <info>string</info>  <strong>$key_pair</strong>    See <strong>sodium_crypto_box_keypair_from_secretkey_and_publickey()</strong>. This should
                       include the sender's public key and the recipient's secret key.

<comment>Return:</comment>
  <info>string|false</info>  Returns the plaintext message on success,  或者在失败时返回 <info>false</info>.


id: sodium_crypto_box_publickey
type: function
doc:
<comment>Description:</comment>
  Extract the public key from a crypto_box keypair
  
  Given a keypair, fetch only the public key.

<comment>Param:</comment>
  <info>string</info>  <strong>$key_pair</strong>  A keypair, such as one generated by <strong>sodium_crypto_box_keypair()</strong> or
                     <strong>sodium_crypto_box_seed_keypair()</strong>

<comment>Return:</comment>
  <info>string</info>  X25519 public key.


id: sodium_crypto_box_publickey_from_secretkey
type: function
doc:
<comment>Description:</comment>
  Calculate the public key from a secret key
  
  Given a secret key, calculate the corresponding public key.
  
  This only works with the type of keys intended for use with <strong>crypto_box()</strong> (which uses Elliptic
  Curve Diffie-Hellman over the Montgomery curve, Curve25519; abbreviated as X25519), not
  <strong>crypto_sign()</strong> (which uses Edwards Digital Signature Algorithm over the Edwards Curve with the
  corresponding paramaters; abbreviated Ed25519).

<comment>Param:</comment>
  <info>string</info>  <strong>$secret_key</strong>  X25519 secret key

<comment>Return:</comment>
  <info>string</info>  X25519 public key.


id: sodium_crypto_box_seal
type: function
doc:
<comment>Description:</comment>
  Anonymous public-key encryption
  
  Encrypt a message such that only the recipient can decrypt it.
  
  Unlike with <strong>sodium_crypto_box()</strong>, you only need to know the recipient's public key to use
  <strong>sodium_crypto_box_seal()</strong>. One consequence of this convenience, however, is that the ciphertext
  isn't bound to a static public key, and is therefore not authenticated. Hence, anonymous
  public-key encryption.
  
  <strong>sodium_crypto_box_seal()</strong> still provides ciphertext integrity. Just not sender identity
  authentication.
  
  If you also need sender authentication, the <strong>sodium_crypto_sign()</strong> functions are likely the best
  place to start.

<comment>Param:</comment>
  <info>string</info>  <strong>$message</strong>     The message to encrypt.
  <info>string</info>  <strong>$public_key</strong>  The public key that corresponds to the only key that can decrypt the message.

<comment>Return:</comment>
  <info>string</info>  A ciphertext string in the format of (one-time public key, encrypted message,
          authentication tag).


id: sodium_crypto_box_seal_open
type: function
doc:
<comment>Description:</comment>
  Anonymous public-key decryption
  
  Decrypt a message that was encrypted with <strong>sodium_crypto_box_seal()</strong>

<comment>Param:</comment>
  <info>string</info>  <strong>$ciphertext</strong>  The encrypted message
  <info>string</info>  <strong>$key_pair</strong>    The keypair of the recipient. Must include the secret key.

<comment>Return:</comment>
  <info>string|false</info>  The plaintext on success,  或者在失败时返回 <info>false</info>.


id: sodium_crypto_box_secretkey
type: function
doc:
<comment>Description:</comment>
  Extracts the secret key from a crypto_box keypair
  
  Given a keypair, fetch only the secret key.

<comment>Param:</comment>
  <info>string</info>  <strong>$key_pair</strong>  A keypair, such as one generated by <strong>sodium_crypto_box_keypair()</strong> or
                     <strong>sodium_crypto_box_seed_keypair()</strong>

<comment>Return:</comment>
  <info>string</info>  X25519 secret key.


id: sodium_crypto_box_seed_keypair
type: function
doc:
<comment>Description:</comment>
  Deterministically derive the key pair from a single key
  
  Clamps the seed to form a secret key, derives the public key, and returns the two as a keypair.
  
  The <return>*_seed_keypair</return> functions are ideal for generating a keypair from a password and salt. Use the
  result as a <strong>$seed</strong> to generate the desired keys.

<comment>Param:</comment>
  <info>string</info>  <strong>$seed</strong>  Some cryptographic input. Must be 32 bytes.

<comment>Return:</comment>
  <info>string</info>  X25519 Keypair (secret key and public key).


id: sodium_crypto_core_ristretto255_add
type: function
doc:
<comment>Description:</comment>
  Adds an element
  
  Adds an element <strong>$q</strong> to <strong>$p</strong>. Available as of libsodium 1.0.18.
  
  本函数还未编写文档，仅有参数列表。

<comment>Param:</comment>
  <info>string</info>  <strong>$p</strong>  An element.
  <info>string</info>  <strong>$q</strong>  An element.

<comment>Return:</comment>
  <info>string</info>  Returns a 32-byte random <info>string</info>.

<comment>See Also:</comment>
   * <strong>sodium_crypto_core_ristretto255_random()</strong>
   * <strong>sodium_crypto_core_ristretto255_sub()</strong>


id: sodium_crypto_core_ristretto255_from_hash
type: function
doc:
<comment>Description:</comment>
  Maps a vector
  
  Maps a 64-bytes vector <strong>$s</strong> to a group element. Available as of libsodium 1.0.18.
  
  本函数还未编写文档，仅有参数列表。

<comment>Param:</comment>
  <info>string</info>  <strong>$s</strong>  A 64-bytes vector.

<comment>Return:</comment>
  <info>string</info>  Returns a 32-byte random <info>string</info>.

<comment>See Also:</comment>
   * <strong>sodium_hex2bin()</strong>
   * <strong>sodium_bin2hex()</strong>
   * <strong>sodium_crypto_core_ristretto255_from_hash()</strong>


id: sodium_crypto_core_ristretto255_is_valid_point
type: function
doc:
<comment>Description:</comment>
  Determines if a point on the ristretto255 curve
  
  Determines if a point on the ristretto255 curve, in canonical form, on the main subgroup, and that
  the point doesn't have a small order. Available as of libsodium 1.0.18.
  
  本函数还未编写文档，仅有参数列表。

<comment>Param:</comment>
  <info>string</info>  <strong>$s</strong>  An Elliptic-curve point.

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info> if <strong>$s</strong> is on the ristretto255 curve, <info>false</info> otherwise.

<comment>See Also:</comment>
   * <strong>sodium_crypto_core_ristretto255_scalar_random()</strong>
   * <strong>sodium_crypto_scalarmult_ristretto255_base()</strong>


id: sodium_crypto_core_ristretto255_random
type: function
doc:
<comment>Description:</comment>
  Generates a random key
  
  Generates a random key. Available as of libsodium 1.0.18.
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>string</info>  Returns a 32-byte random <info>string</info>.

<comment>See Also:</comment>
   * <strong>sodium_crypto_core_ristretto255_add()</strong>
   * <strong>sodium_crypto_core_ristretto255_sub()</strong>


id: sodium_crypto_core_ristretto255_scalar_add
type: function
doc:
<comment>Description:</comment>
  Adds a scalar value
  
  Adds an element <strong>$y</strong> to <strong>$x</strong>. Available as of libsodium 1.0.18.
  
  本函数还未编写文档，仅有参数列表。

<comment>Param:</comment>
  <info>string</info>  <strong>$x</strong>  Scalar, representing the X coordinate.
  <info>string</info>  <strong>$y</strong>  Scalar, representing the Y coordinate.

<comment>Return:</comment>
  <info>string</info>  Returns a 32-byte random <info>string</info>.

<comment>See Also:</comment>
   * <strong>sodium_crypto_core_ristretto255_scalar_random()</strong>
   * <strong>sodium_crypto_core_ristretto255_scalar_sub()</strong>


id: sodium_crypto_core_ristretto255_scalar_complement
type: function
doc:
<comment>Description:</comment>
  The sodium_crypto_core_ristretto255_scalar_complement purpose
  
  Available as of libsodium 1.0.18.
  
  本函数还未编写文档，仅有参数列表。

<comment>Param:</comment>
  <info>string</info>  <strong>$s</strong>  Scalar value.

<comment>Return:</comment>
  <info>string</info>  Returns a 32-byte random <info>string</info>.

<comment>See Also:</comment>
   * <strong>sodium_crypto_core_ristretto255_scalar_random()</strong>


id: sodium_crypto_core_ristretto255_scalar_invert
type: function
doc:
<comment>Description:</comment>
  Inverts a scalar value
  
  Inverts a scalar value. Available as of libsodium 1.0.18.
  
  本函数还未编写文档，仅有参数列表。

<comment>Param:</comment>
  <info>string</info>  <strong>$s</strong>  Scalar value.

<comment>Return:</comment>
  <info>string</info>  Returns a 32-byte random <info>string</info>.

<comment>See Also:</comment>
   * <strong>sodium_crypto_core_ristretto255_scalar_random()</strong>


id: sodium_crypto_core_ristretto255_scalar_mul
type: function
doc:
<comment>Description:</comment>
  Multiplies a scalar value
  
  Multiplies a scalar value. Available as of libsodium 1.0.18.
  
  本函数还未编写文档，仅有参数列表。

<comment>Param:</comment>
  <info>string</info>  <strong>$x</strong>  Scalar, representing the X coordinate.
  <info>string</info>  <strong>$y</strong>  Scalar, representing the Y coordinate.

<comment>Return:</comment>
  <info>string</info>  Returns a 32-byte random <info>string</info>.

<comment>See Also:</comment>
   * <strong>sodium_crypto_core_ristretto255_scalar_random()</strong>


id: sodium_crypto_core_ristretto255_scalar_negate
type: function
doc:
<comment>Description:</comment>
  Negates a scalar value
  
  Negates a scalar value. Available as of libsodium 1.0.18.
  
  本函数还未编写文档，仅有参数列表。

<comment>Param:</comment>
  <info>string</info>  <strong>$s</strong>  Scalar value.

<comment>Return:</comment>
  <info>string</info>  Returns a 32-byte random <info>string</info>.

<comment>See Also:</comment>
   * <strong>sodium_crypto_core_ristretto255_scalar_random()</strong>


id: sodium_crypto_core_ristretto255_scalar_random
type: function
doc:
<comment>Description:</comment>
  Generates a random key
  
  Generates a random key. Available as of libsodium 1.0.18.
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>string</info>  Returns a 32-byte random <info>string</info>.

<comment>See Also:</comment>
   * <strong>sodium_crypto_core_ristretto255_scalar_add()</strong>
   * <strong>sodium_crypto_core_ristretto255_scalar_sub()</strong>


id: sodium_crypto_core_ristretto255_scalar_reduce
type: function
doc:
<comment>Description:</comment>
  Reduces a scalar value
  
  Reduces a scalar value. Available as of libsodium 1.0.18.
  
  本函数还未编写文档，仅有参数列表。

<comment>Param:</comment>
  <info>string</info>  <strong>$s</strong>  Scalar value.

<comment>Return:</comment>
  <info>string</info>  Returns a 32-byte random <info>string</info>.

<comment>See Also:</comment>
   * <strong>sodium_crypto_core_ristretto255_scalar_random()</strong>


id: sodium_crypto_core_ristretto255_scalar_sub
type: function
doc:
<comment>Description:</comment>
  Subtracts a scalar value
  
  Subtracts a scalar <strong>$y</strong> from <strong>$x</strong>. Available as of libsodium 1.0.18.
  
  本函数还未编写文档，仅有参数列表。

<comment>Param:</comment>
  <info>string</info>  <strong>$x</strong>  Scalar, representing the X coordinate.
  <info>string</info>  <strong>$y</strong>  Scalar, representing the Y coordinate.

<comment>Return:</comment>
  <info>string</info>  Returns a 32-byte random <info>string</info>.

<comment>See Also:</comment>
   * <strong>sodium_crypto_core_ristretto255_scalar_random()</strong>
   * <strong>sodium_crypto_core_ristretto255_scalar_add()</strong>


id: sodium_crypto_core_ristretto255_sub
type: function
doc:
<comment>Description:</comment>
  Subtracts an element
  
  Subtracts an element <strong>$q</strong> from <strong>$p</strong>. Available as of libsodium 1.0.18.
  
  本函数还未编写文档，仅有参数列表。

<comment>Param:</comment>
  <info>string</info>  <strong>$p</strong>  An element.
  <info>string</info>  <strong>$q</strong>  An element.

<comment>Return:</comment>
  <info>string</info>  Returns a 32-byte random <info>string</info>.

<comment>See Also:</comment>
   * <strong>sodium_crypto_core_ristretto255_random()</strong>
   * <strong>sodium_crypto_core_ristretto255_add()</strong>


id: sodium_crypto_generichash
type: function
doc:
<comment>Description:</comment>
  Get a hash of the message
  
  Hash a message with BLAKE2b.

<comment>Param:</comment>
  <info>string</info>  <strong>$message</strong>  The message being hashed.
  <info>string</info>  <strong>$key</strong>      (Optional) cryptographic key. This serves the same function as a HMAC key, but
                    it's utilized as a reserved section of the internal BLAKE2 state.
  <info>int</info>     <strong>$length</strong>   Output size.

<comment>Return:</comment>
  <info>string</info>  The cryptographic hash as raw bytes. If a hex-encoded output is desired, the result can be
          passed to <strong>sodium_bin2hex()</strong>.


id: sodium_crypto_generichash_final
type: function
doc:
<comment>Description:</comment>
  Complete the hash
  
  The finalization method for the streaming generichash API.

<comment>Param:</comment>
  <info>string</info>  <strong>$state</strong>   Hash state returned from <strong>sodium_crypto_generichash_init()</strong>
  <info>int</info>     <strong>$length</strong>  Output length.

<comment>Return:</comment>
  <info>string</info>  Cryptographic hash.


id: sodium_crypto_generichash_init
type: function
doc:
<comment>Description:</comment>
  Initialize a hash for streaming
  
  The initialization method for the streaming generichash API.

<comment>Param:</comment>
  <info>string</info>  <strong>$key</strong>     The generichash key.
  <info>int</info>     <strong>$length</strong>  The expected output length of the hash function.

<comment>Return:</comment>
  <info>string</info>  Returns a hash state, serialized as a raw binary string.


id: sodium_crypto_generichash_keygen
type: function
doc:
<comment>Description:</comment>
  Generate a random generichash key
  
  Generate a random key for use with the generichash API.

<comment>Return:</comment>
  <info>string</info>  A random 256-bit key.


id: sodium_crypto_generichash_update
type: function
doc:
<comment>Description:</comment>
  Add message to a hash
  
  Appends a message to the internal hash state.

<comment>Param:</comment>
  <info>string</info>  <strong>$state</strong>    The return value of <strong>sodium_crypto_generichash_init()</strong>.
  <info>string</info>  <strong>$message</strong>  Data to append to the hashing state.

<comment>Return:</comment>
  <info>true</info>  总是返回 <info>true</info>。


id: sodium_crypto_kdf_derive_from_key
type: function
doc:
<comment>Description:</comment>
  Derive a subkey
  
  Derive a subkey from a root key and additional context.
  
  Similar to <strong>hash_hkdf()</strong>.

<comment>Param:</comment>
  <info>int</info>     <strong>$subkey_length</strong>  Length of the key to return (in bytes)
  <info>int</info>     <strong>$subkey_id</strong>      Return the Nth subkey from a given root key. Useful for seeking.
  <info>string</info>  <strong>$context</strong>        Application-specific context.
  <info>string</info>  <strong>$key</strong>            The root key from which the subkey is derived.

<comment>Return:</comment>
  <info>string</info>  A string of pseudorandom (raw binary) bytes.


id: sodium_crypto_kdf_keygen
type: function
doc:
<comment>Description:</comment>
  Generate a random root key for the KDF interface
  
  Generates a random key suitable for serving as the root key for
  <strong>sodium_crypto_kdf_derive_from_key()</strong>.

<comment>Return:</comment>
  <info>string</info>  A random 256-bit key.


id: sodium_crypto_kx_client_session_keys
type: function
doc:
<comment>Description:</comment>
  Calculate the client-side session keys.
  
  Calculate the client-side session keys, using the X25519 + BLAKE2b key-exchange method.

<comment>Param:</comment>
  <info>string</info>  <strong>$client_key_pair</strong>  A crypto_kx keypair, such as one generated by
                            <strong>sodium_crypto_kx_keypair()</strong>.
  <info>string</info>  <strong>$server_key</strong>       A crypto_kx public key.

<comment>Return:</comment>
  <info>array</info>  An array consisting of two strings. The first should be used for receiving data from the
         server. The second should be used for sending data to the server.


id: sodium_crypto_kx_keypair
type: function
doc:
<comment>Description:</comment>
  Creates a new sodium keypair
  
  Create a new sodium keypair consisting of the secret key (32 bytes) followed by the public key (32
  bytes). The keys can be retrieved by calling <strong>sodium_crypto_kx_secretkey()</strong> and
  <strong>sodium_crypto_kx_publickey()</strong>, respectively.

<comment>Return:</comment>
  <info>string</info>  Returns the new keypair on success; throws an exception otherwise.


id: sodium_crypto_kx_publickey
type: function
doc:
<comment>Description:</comment>
  Extract the public key from a crypto_kx keypair
  
  Extract the public key from a crypto_kx keypair.

<comment>Param:</comment>
  <info>string</info>  <strong>$key_pair</strong>  X25519 keypair, such as one generated by <strong>sodium_crypto_kx_keypair()</strong>.

<comment>Return:</comment>
  <info>string</info>  X25519 public key.


id: sodium_crypto_kx_secretkey
type: function
doc:
<comment>Description:</comment>
  Extract the secret key from a crypto_kx keypair.
  
  Extract the secret key from a crypto_kx keypair.

<comment>Param:</comment>
  <info>string</info>  <strong>$key_pair</strong>  X25519 keypair, such as one generated by <strong>sodium_crypto_kx_keypair()</strong>.

<comment>Return:</comment>
  <info>string</info>  X25519 secret key.


id: sodium_crypto_kx_seed_keypair
type: function
doc:
<comment>Description:</comment>
  Description
  
  本函数还未编写文档，仅有参数列表。

<comment>Param:</comment>
  <info>string</info>  <strong>$seed</strong>  

<comment>Return:</comment>
  <info>string</info>  


id: sodium_crypto_kx_server_session_keys
type: function
doc:
<comment>Description:</comment>
  Calculate the server-side session keys.
  
  Calculate the server-side session keys, using the X25519 + BLAKE2b key-exchange method.

<comment>Param:</comment>
  <info>string</info>  <strong>$server_key_pair</strong>  A crypto_kx keypair, such as one generated by
                            <strong>sodium_crypto_kx_keypair()</strong>.
  <info>string</info>  <strong>$client_key</strong>       A crypto_kx public key.

<comment>Return:</comment>
  <info>array</info>  An array consisting of two strings. The first should be used for receiving data from the
         client. The second should be used for sending data to the client.


id: sodium_crypto_pwhash
type: function
doc:
<comment>Description:</comment>
  Derive a key from a password, using Argon2
  
  This function provides low-level access to libsodium's crypto_pwhash key derivation function.
  Unless you have specific reason to use this function, you should use <strong>sodium_crypto_pwhash_str()</strong> or
  <strong>password_hash()</strong> functions instead.
  
  A common reason to use this particular function is to derive the seeds for cryptographic keys from
  a password and salt, and then use these seeds to generate the actual keys needed for some purpose
  (e.g. <strong>sodium_crypto_sign_detached()</strong>).

<comment>Param:</comment>
  <info>int</info>     <strong>$length</strong>    <info>int</info>; The length of the password hash to generate, in bytes.
  <info>string</info>  <strong>$password</strong>  <info>string</info>; The password to generate a hash for.
  <info>string</info>  <strong>$salt</strong>      A salt to add to the password before hashing. The salt should be unpredictable,
                     ideally generated from a good random number source such as <strong>random_bytes()</strong>, and
                     have a length of at least <info>SODIUM_CRYPTO_PWHASH_SALTBYTES</info> bytes.
  <info>int</info>     <strong>$opslimit</strong>  Represents a maximum amount of computations to perform. Raising this number
                     will make the function require more CPU cycles to compute a key. There are some
                     constants available to set the operations limit to appropriate values depending
                     on intended use, in order of strength:
                     <info>SODIUM_CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE</info>,
                     <info>SODIUM_CRYPTO_PWHASH_OPSLIMIT_MODERATE</info> and
                     <info>SODIUM_CRYPTO_PWHASH_OPSLIMIT_SENSITIVE</info>.
  <info>int</info>     <strong>$memlimit</strong>  The maximum amount of RAM that the function will use, in bytes. There are
                     constants to help you choose an appropriate value, in order of size:
                     <info>SODIUM_CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE</info>,
                     <info>SODIUM_CRYPTO_PWHASH_MEMLIMIT_MODERATE</info>, and
                     <info>SODIUM_CRYPTO_PWHASH_MEMLIMIT_SENSITIVE</info>. Typically these should be paired with
                     the matching <strong>$opslimit</strong> values.
  <info>int</info>     <strong>$algo</strong>      <info>int</info> A number indicating the hash algorithm to use. By default
                     <info>SODIUM_CRYPTO_PWHASH_ALG_DEFAULT</info> (the currently recommended algorithm, which
                     can change from one version of libsodium to another), or explicitly using
                     <info>SODIUM_CRYPTO_PWHASH_ALG_ARGON2ID13</info>, representing the Argon2id algorithm
                     version 1.3.

<comment>Return:</comment>
  <info>string</info>  Returns the derived key. The return value is a binary string of the hash, not an
          ASCII-encoded representation, and does not contain additional information about the
          parameters used to create the hash, so you will need to keep that information if you are
          ever going to verify the password in future. Use <strong>sodium_crypto_pwhash_str()</strong> to avoid
          needing to do all that.


id: sodium_crypto_pwhash_scryptsalsa208sha256
type: function
doc:
<comment>Description:</comment>
  Derives a key from a password, using scrypt
  
  This is the scrypt counterpart to <strong>sodium_crypto_pwhash()</strong>.
  
  A common reason to use this particular function is to derive the seeds for cryptographic keys from
  a password and salt, and then use these seeds to generate the actual keys needed for some purpose
  (e.g. <strong>sodium_crypto_sign_detached()</strong>).

<comment>Param:</comment>
  <info>int</info>     <strong>$length</strong>    The length of the password hash to generate, in bytes.
  <info>string</info>  <strong>$password</strong>  The password to generate a hash for.
  <info>string</info>  <strong>$salt</strong>      A salt to add to the password before hashing. The salt should be unpredictable,
                     ideally generated from a good random number source such as <strong>random_bytes()</strong>, and
                     have a length of at least <info>SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_SALTBYTES</info>
                     bytes.
  <info>int</info>     <strong>$opslimit</strong>  Represents a maximum amount of computations to perform. Raising this number
                     will make the function require more CPU cycles to compute a key. There are some
                     constants available to set the operations limit to appropriate values depending
                     on intended use, in order of strength:
                     <info>SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_OPSLIMIT_INTERACTIVE</info> and
                     <info>SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_OPSLIMIT_SENSITIVE</info>.
  <info>int</info>     <strong>$memlimit</strong>  The maximum amount of RAM that the function will use, in bytes. There are
                     constants to help you choose an appropriate value, in order of size:
                     <info>SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_MEMLIMIT_INTERACTIVE</info> and
                     <info>SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_MEMLIMIT_SENSITIVE</info>. Typically these
                     should be paired with the matching <strong>$opslimit</strong> values.

<comment>Return:</comment>
  <info>string</info>  A string of bytes of the desired length.


id: sodium_crypto_pwhash_scryptsalsa208sha256_str
type: function
doc:
<comment>Description:</comment>
  Get an ASCII encoded hash
  
  本函数还未编写文档，仅有参数列表。

<comment>Param:</comment>
  <info>string</info>  <strong>$password</strong>  
  <info>int</info>     <strong>$opslimit</strong>  
  <info>int</info>     <strong>$memlimit</strong>  

<comment>Return:</comment>
  <info>string</info>  


id: sodium_crypto_pwhash_scryptsalsa208sha256_str_verify
type: function
doc:
<comment>Description:</comment>
  Verify that the password is a valid password verification string
  
  本函数还未编写文档，仅有参数列表。

<comment>Param:</comment>
  <info>string</info>  <strong>$hash</strong>      
  <info>string</info>  <strong>$password</strong>  

<comment>Return:</comment>
  <info>bool</info>  


id: sodium_crypto_pwhash_str
type: function
doc:
<comment>Description:</comment>
  Get an ASCII-encoded hash
  
  Uses a CPU- and memory-hard hash algorithm along with a randomly-generated salt, and memory and
  CPU limits to generate an ASCII-encoded hash suitable for password storage.

<comment>Param:</comment>
  <info>string</info>  <strong>$password</strong>  <info>string</info>; The password to generate a hash for.
  <info>int</info>     <strong>$opslimit</strong>  Represents a maximum amount of computations to perform. Raising this number
                     will make the function require more CPU cycles to compute a key. There are
                     constants available to set the operations limit to appropriate values depending
                     on intended use, in order of strength:
                     <info>SODIUM_CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE</info>,
                     <info>SODIUM_CRYPTO_PWHASH_OPSLIMIT_MODERATE</info> and
                     <info>SODIUM_CRYPTO_PWHASH_OPSLIMIT_SENSITIVE</info>.
  <info>int</info>     <strong>$memlimit</strong>  The maximum amount of RAM that the function will use, in bytes. There are
                     constants to help you choose an appropriate value, in order of size:
                     <info>SODIUM_CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE</info>,
                     <info>SODIUM_CRYPTO_PWHASH_MEMLIMIT_MODERATE</info>, and
                     <info>SODIUM_CRYPTO_PWHASH_MEMLIMIT_SENSITIVE</info>. Typically these should be paired with
                     the matching opslimit values.

<comment>Return:</comment>
  <info>string</info>  Returns the hashed password.
          
          In order to produce the same password hash from the same password, the same values for
          <strong>$opslimit</strong> and <strong>$memlimit</strong> must be used. These are embedded within the generated hash, so
          everything that's needed to verify the hash is included. This allows the
          <strong>sodium_crypto_pwhash_str_verify()</strong> function to verify the hash without needing separate
          storage for the other parameters.

<comment>See Also:</comment>
   * <strong>sodium_crypto_pwhash_str_verify()</strong>
   * <strong>sodium_crypto_pwhash()</strong>
   * <strong>password_hash()</strong>
   * <strong>password_verify()</strong>
   * Libsodium Argon2 docs


id: sodium_crypto_pwhash_str_needs_rehash
type: function
doc:
<comment>Description:</comment>
  Determine whether or not to rehash a password
  
  Determine whether or not to rehash a password, based on the current hash <strong>$opslimit</strong> and <strong>$memlimit</strong>.

<comment>Param:</comment>
  <info>string</info>  <strong>$password</strong>  Password hash
  <info>int</info>     <strong>$opslimit</strong>  Configured opslimit; see <strong>sodium_crypto_pwhash_str()</strong>
  <info>int</info>     <strong>$memlimit</strong>  Configured memlimit; see <strong>sodium_crypto_pwhash_str()</strong>

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info> if the provided memlimit/opslimit do not match what's stored in the hash.
        Returns <info>false</info> if they match.


id: sodium_crypto_pwhash_str_verify
type: function
doc:
<comment>Description:</comment>
  Verifies that a password matches a hash
  
  Checks that a password hash created using <strong>sodium_crypto_pwhash_str()</strong> matches a given plain-text
  password. Note that the parameters are in the opposite order to the same parameters in the similar
  <strong>password_verify()</strong> function.

<comment>Param:</comment>
  <info>string</info>  <strong>$hash</strong>      一个由 <strong>password_hash()</strong> 创建的散列值。
  <info>string</info>  <strong>$password</strong>  用户的密码。

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info> if the password and hash match, or <info>false</info> otherwise.

<comment>See Also:</comment>
   * <strong>sodium_crypto_pwhash_str()</strong>
   * <strong>password_hash()</strong>
   * <strong>password_verify()</strong>


id: sodium_crypto_scalarmult
type: function
doc:
<comment>Description:</comment>
  Compute a shared secret given a user's secret key and another user's public key
  
  Elliptic Curve Diffie-Hellman. Calculates scalar n times point p, on an elliptic curve.

<comment>Param:</comment>
  <info>string</info>  <strong>$n</strong>  scalar, which is typically a secret key
  <info>string</info>  <strong>$p</strong>  point (x-coordinate), which is typically a public key

<comment>Return:</comment>
  <info>string</info>  A 32-byte random string.


id: sodium_crypto_scalarmult_base
type: function
doc:
<comment>Description:</comment>
  别名 sodium_crypto_box_publickey_from_secretkey
  
  此函数是该函数的别名： <strong>sodium_crypto_box_publickey_from_secretkey()</strong>.


id: sodium_crypto_scalarmult_ristretto255
type: function
doc:
<comment>Description:</comment>
  Computes a shared secret
  
  Calculates scalar <strong>$n</strong> times point <strong>$p</strong>. Available as of libsodium 1.0.18.
  
  本函数还未编写文档，仅有参数列表。

<comment>Param:</comment>
  <info>string</info>  <strong>$n</strong>  A scalar, which is typically a secret key.
  <info>string</info>  <strong>$p</strong>  A point (x-coordinate), which is typically a public key.

<comment>Return:</comment>
  <info>string</info>  Returns a 32-byte random <info>string</info>.

<comment>See Also:</comment>
   * <strong>sodium_crypto_scalarmult_ristretto255_base()</strong>


id: sodium_crypto_scalarmult_ristretto255_base
type: function
doc:
<comment>Description:</comment>
  Calculates the public key from a secret key
  
  Given a secret key, calculates the corresponding public key. Available as of libsodium 1.0.18.
  
  本函数还未编写文档，仅有参数列表。

<comment>Param:</comment>
  <info>string</info>  <strong>$n</strong>  A secret key.

<comment>Return:</comment>
  <info>string</info>  Returns a 32-byte random <info>string</info>.

<comment>See Also:</comment>
   * <strong>sodium_crypto_scalarmult_ristretto255()</strong>


id: sodium_crypto_secretbox
type: function
doc:
<comment>Description:</comment>
  Authenticated shared-key encryption
  
  Encrypt a message with a symmetric (shared) key.

<comment>Param:</comment>
  <info>string</info>  <strong>$message</strong>  The plaintext message to encrypt.
  <info>string</info>  <strong>$nonce</strong>    A number that must be only used once, per message. 24 bytes long. This is a
                    large enough bound to generate randomly (i.e. <strong>random_bytes()</strong>).
  <info>string</info>  <strong>$key</strong>      Encryption key (256-bit).

<comment>Return:</comment>
  <info>string</info>  Returns the encrypted string.

<comment>See Also:</comment>
   * <strong>sodium_crypto_secretbox_open()</strong>
   * <strong>sodium_crypto_secretbox_keygen()</strong>
   * <strong>random_bytes()</strong>


id: sodium_crypto_secretbox_keygen
type: function
doc:
<comment>Description:</comment>
  Generate random key for sodium_crypto_secretbox
  
  Generate a key for use with <strong>sodium_crypto_secretbox()</strong> and <strong>sodium_crypto_secretbox_open()</strong>.

<comment>Return:</comment>
  <info>string</info>  Returns the generated string of cryptographically secure random bytes.

<comment>See Also:</comment>
   * <strong>sodium_bin2hex()</strong>
   * <strong>random_bytes()</strong>


id: sodium_crypto_secretbox_open
type: function
doc:
<comment>Description:</comment>
  Authenticated shared-key decryption
  
  Decrypt an encrypted message with a symmetric (shared) key.

<comment>Param:</comment>
  <info>string</info>  <strong>$ciphertext</strong>  Must be in the format provided by <strong>sodium_crypto_secretbox()</strong> (ciphertext and
                       tag, concatenated).
  <info>string</info>  <strong>$nonce</strong>       A number that must be only used once, per message. 24 bytes long. This is a
                       large enough bound to generate randomly (i.e. <strong>random_bytes()</strong>).
  <info>string</info>  <strong>$key</strong>         Encryption key (256-bit).

<comment>Return:</comment>
  <info>string|false</info>  The decrypted string on success 或者在失败时返回 <info>false</info>.

<comment>See Also:</comment>
   * <strong>sodium_crypto_secretbox()</strong>
   * <strong>sodium_crypto_secretbox_keygen()</strong>
   * <strong>random_bytes()</strong>


id: sodium_crypto_secretstream_xchacha20poly1305_init_pull
type: function
doc:
<comment>Description:</comment>
  Initialize a secretstream context for decryption
  
  Initialize a secretstream context for decryption.

<comment>Param:</comment>
  <info>string</info>  <strong>$header</strong>  The header of the secretstream. This should be one of the values produced by
                   <strong>sodium_crypto_secretstream_xchacha20poly1305_init_push()</strong>.
  <info>string</info>  <strong>$key</strong>     Encryption key (256-bit).

<comment>Return:</comment>
  <info>string</info>  Secretstream state.


id: sodium_crypto_secretstream_xchacha20poly1305_init_push
type: function
doc:
<comment>Description:</comment>
  Initialize a secretstream context for encryption
  
  Initialize a secretstream context for encryption.

<comment>Param:</comment>
  <info>string</info>  <strong>$key</strong>  Cryptography key. See <strong>sodium_crypto_secretstream_xchacha20poly1305_keygen()</strong>.

<comment>Return:</comment>
  <info>array</info>  An array with two string values:


id: sodium_crypto_secretstream_xchacha20poly1305_keygen
type: function
doc:
<comment>Description:</comment>
  Generate a random secretstream key.
  
  Generate a random secretstream key.

<comment>Return:</comment>
  <info>string</info>  Returns a string of random bytes.


id: sodium_crypto_secretstream_xchacha20poly1305_pull
type: function
doc:
<comment>Description:</comment>
  Decrypt a chunk of data from an encrypted stream
  
  Decrypt a chunk of data from an encrypted stream.

<comment>Param:</comment>
  <info>string</info>  <strong>$state</strong>            See <strong>sodium_crypto_secretstream_xchacha20poly1305_init_pull()</strong> and
                            <strong>sodium_crypto_secretstream_xchacha20poly1305_init_push()</strong>
  <info>string</info>  <strong>$ciphertext</strong>       The ciphertext chunk to decrypt.
  <info>string</info>  <strong>$additional_data</strong>  Optional additional data to include in the authentication tag.

<comment>Return:</comment>
  <info>array|false</info>  An array with two values: <info>string</info>; The decrypted chunk <info>int</info>; An optional tag (if
               provided during push). Possible values:
               <info>SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_MESSAGE</info>: the most common tag, that
               doesn't add any information about the nature of the message.
               <info>SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_FINAL</info>: indicates that the message
               marks the end of the stream, and erases the secret key used to encrypt the previous
               sequence. <info>SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_PUSH</info>: indicates that the
               message marks the end of a set of messages, but not the end of the stream. For
               example, a huge JSON string sent as multiple chunks can use this tag to indicate to
               the application that the string is complete and that it can be decoded. But the
               stream itself is not closed, and more data may follow.
               <info>SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_REKEY</info>: "forget" the key used to
               encrypt this message and the previous ones, and derive a new secret key.
               
               <info>string</info>; The decrypted chunk
               
               <info>int</info>; An optional tag (if provided during push). Possible values:
               <info>SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_MESSAGE</info>: the most common tag, that
               doesn't add any information about the nature of the message.
               <info>SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_FINAL</info>: indicates that the message
               marks the end of the stream, and erases the secret key used to encrypt the previous
               sequence. <info>SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_PUSH</info>: indicates that the
               message marks the end of a set of messages, but not the end of the stream. For
               example, a huge JSON string sent as multiple chunks can use this tag to indicate to
               the application that the string is complete and that it can be decoded. But the
               stream itself is not closed, and more data may follow.
               <info>SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_REKEY</info>: "forget" the key used to
               encrypt this message and the previous ones, and derive a new secret key.


id: sodium_crypto_secretstream_xchacha20poly1305_push
type: function
doc:
<comment>Description:</comment>
  Encrypt a chunk of data so that it can safely be decrypted in a streaming API
  
  Encrypt a chunk of data so that it can safely be decrypted in a streaming API.

<comment>Param:</comment>
  <info>string</info>  <strong>$state</strong>            See <strong>sodium_crypto_secretstream_xchacha20poly1305_init_pull()</strong> and
                            <strong>sodium_crypto_secretstream_xchacha20poly1305_init_push()</strong>
  <info>string</info>  <strong>$message</strong>          
  <info>string</info>  <strong>$additional_data</strong>  
  <info>int</info>     <strong>$tag</strong>              Optional. Can be used to assert decryption behavior (i.e. re-keying or
                            indicating the final chunk in a stream).

<comment>Return:</comment>
  <info>string</info>  Returns the encrypted ciphertext.


id: sodium_crypto_secretstream_xchacha20poly1305_rekey
type: function
doc:
<comment>Description:</comment>
  Explicitly rotate the key in the secretstream state
  
  Explicitly rotate the key in the secretstream state. Overwrites the value passed in.

<comment>Param:</comment>
  <info>string</info>  <strong>$state</strong>  Secretstream state.

<comment>Return:</comment>
  <info>void</info>  没有返回值。


id: sodium_crypto_shorthash
type: function
doc:
<comment>Description:</comment>
  Compute a short hash of a message and key
  
  <strong>sodium_crypto_shorthash()</strong> wraps a hash function called SipHash-2-4, which is ideal for
  implementing hash tables that are not susceptible to hash collision denial of service attacks
  (Hash-DoS).
  
  SipHash-2-4 isn't a general purpose cryptographic hash function.

<comment>Param:</comment>
  <info>string</info>  <strong>$message</strong>  The message to hash.
  <info>string</info>  <strong>$key</strong>      The hash key.

<comment>Return:</comment>
  <info>string</info>  


id: sodium_crypto_shorthash_keygen
type: function
doc:
<comment>Description:</comment>
  Get random bytes for key
  
  Generate a key for use with <strong>sodium_crypto_shorthash()</strong>.
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>string</info>  


id: sodium_crypto_sign
type: function
doc:
<comment>Description:</comment>
  Sign a message
  
  Sign a message with a secret key, that can be verified by the corresponding public key. This
  function attaches the signature to the message. See <strong>sodium_crypto_sign_detached()</strong> for detached
  signatures.

<comment>Param:</comment>
  <info>string</info>  <strong>$message</strong>     Message to sign.
  <info>string</info>  <strong>$secret_key</strong>  Secret key. See <strong>sodium_crypto_sign_secretkey()</strong>

<comment>Return:</comment>
  <info>string</info>  Signed message (not encrypted).


id: sodium_crypto_sign_detached
type: function
doc:
<comment>Description:</comment>
  Sign the message
  
  Sign a message with a secret key, that can be verified by the corresponding public key. This
  function returns a detached signature.

<comment>Param:</comment>
  <info>string</info>  <strong>$message</strong>     Message to sign.
  <info>string</info>  <strong>$secret_key</strong>  Secret key. See <strong>sodium_crypto_sign_secretkey()</strong>

<comment>Return:</comment>
  <info>string</info>  Cryptographic signature.


id: sodium_crypto_sign_ed25519_pk_to_curve25519
type: function
doc:
<comment>Description:</comment>
  Convert an Ed25519 public key to a Curve25519 public key
  
  Given an Ed25519 public key, calculate the birationally equivalent X25519 public key.

<comment>Param:</comment>
  <info>string</info>  <strong>$public_key</strong>  Public key suitable for the crypto_sign functions.

<comment>Return:</comment>
  <info>string</info>  Public key suitable for the crypto_box functions.


id: sodium_crypto_sign_ed25519_sk_to_curve25519
type: function
doc:
<comment>Description:</comment>
  Convert an Ed25519 secret key to a Curve25519 secret key
  
  Given an Ed25519 secret key, calculate the birationally equivalent X25519 secret key.

<comment>Param:</comment>
  <info>string</info>  <strong>$secret_key</strong>  Secret key suitable for the crypto_sign functions.

<comment>Return:</comment>
  <info>string</info>  Secret key suitable for the crypto_box functions.


id: sodium_crypto_sign_keypair
type: function
doc:
<comment>Description:</comment>
  Randomly generate a secret key and a corresponding public key
  
  Generate a random Ed25519 keypair as one string.

<comment>Return:</comment>
  <info>string</info>  Ed25519 keypair.


id: sodium_crypto_sign_keypair_from_secretkey_and_publickey
type: function
doc:
<comment>Description:</comment>
  Join a secret key and public key together
  
  Join a secret key and public key together.

<comment>Param:</comment>
  <info>string</info>  <strong>$secret_key</strong>  Ed25519 secret key
  <info>string</info>  <strong>$public_key</strong>  Ed25519 public key

<comment>Return:</comment>
  <info>string</info>  Keypair


id: sodium_crypto_sign_open
type: function
doc:
<comment>Description:</comment>
  Check that the signed message has a valid signature
  
  Verify the signature attached to a message and return the message

<comment>Param:</comment>
  <info>string</info>  <strong>$signed_message</strong>  A message signed with <strong>sodium_crypto_sign()</strong>
  <info>string</info>  <strong>$public_key</strong>      An Ed25519 public key

<comment>Return:</comment>
  <info>string|false</info>  Returns the original signed message on success,  或者在失败时返回 <info>false</info>.


id: sodium_crypto_sign_publickey
type: function
doc:
<comment>Description:</comment>
  Extract the Ed25519 public key from a keypair
  
  Extract the Ed25519 public key from a keypair

<comment>Param:</comment>
  <info>string</info>  <strong>$key_pair</strong>  Ed25519 keypair (see: <strong>sodium_crypto_sign_keypair()</strong>)

<comment>Return:</comment>
  <info>string</info>  Ed25519 public key


id: sodium_crypto_sign_publickey_from_secretkey
type: function
doc:
<comment>Description:</comment>
  Extract the Ed25519 public key from the secret key
  
  Extract the Ed25519 public key from the secret key

<comment>Param:</comment>
  <info>string</info>  <strong>$secret_key</strong>  Ed25519 secret key

<comment>Return:</comment>
  <info>string</info>  Ed25519 public key


id: sodium_crypto_sign_secretkey
type: function
doc:
<comment>Description:</comment>
  Extract the Ed25519 secret key from a keypair
  
  Extract the Ed25519 secret key from a keypair

<comment>Param:</comment>
  <info>string</info>  <strong>$key_pair</strong>  Ed25519 keypair (see: <strong>sodium_crypto_sign_keypair()</strong>)

<comment>Return:</comment>
  <info>string</info>  Ed25519 secret key


id: sodium_crypto_sign_seed_keypair
type: function
doc:
<comment>Description:</comment>
  Deterministically derive the key pair from a single key
  
  Clamps the seed to form a secret key, derives the public key, and returns the two as a keypair.
  
  The <return>*_seed_keypair</return> functions are ideal for generating a keypair from a password and salt. Use the
  result as a <strong>$seed</strong> to generate the desired keys.

<comment>Param:</comment>
  <info>string</info>  <strong>$seed</strong>  Some cryptographic input. Must be 32 bytes.

<comment>Return:</comment>
  <info>string</info>  Keypair (secret key and public key)


id: sodium_crypto_sign_verify_detached
type: function
doc:
<comment>Description:</comment>
  Verify signature for the message
  
  Verify signature for the message

<comment>Param:</comment>
  <info>string</info>  <strong>$signature</strong>   The cryptographic signature obtained from <strong>sodium_crypto_sign_detached()</strong>
  <info>string</info>  <strong>$message</strong>     The message being verified
  <info>string</info>  <strong>$public_key</strong>  Ed25519 public key

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。


id: sodium_crypto_stream
type: function
doc:
<comment>Description:</comment>
  Generate a deterministic sequence of bytes from a seed
  
  Generate a deterministic sequence of bytes from a seed, using the XSalsa20 stream cipher.

<comment>Param:</comment>
  <info>int</info>     <strong>$length</strong>  The number of bytes to return.
  <info>string</info>  <strong>$nonce</strong>   A number that must be only used once, per message. 24 bytes long. This is a large
                   enough bound to generate randomly (i.e. <strong>random_bytes()</strong>).
  <info>string</info>  <strong>$key</strong>     Encryption key (256-bit).

<comment>Return:</comment>
  <info>string</info>  String of pseudorandom bytes.


id: sodium_crypto_stream_keygen
type: function
doc:
<comment>Description:</comment>
  Generate a random sodium_crypto_stream key.
  
  Generate a key for use with <strong>sodium_crypto_stream()</strong> and <strong>sodium_crypto_stream_xor()</strong>.

<comment>Return:</comment>
  <info>string</info>  Encryption key (256-bit).


id: sodium_crypto_stream_xchacha20
type: function
doc:
<comment>Description:</comment>
  Expands the key and nonce into a keystream of pseudorandom bytes
  
  Expands the <strong>$key</strong> and <strong>$nonce</strong> into a keystream of pseudorandom bytes.

<comment>Param:</comment>
  <info>int</info>     <strong>$length</strong>  Number of bytes desired.
  <info>string</info>  <strong>$nonce</strong>   24-byte nonce.
  <info>string</info>  <strong>$key</strong>     Key, possibly generated from <strong>sodium_crypto_stream_xchacha20_keygen()</strong>.

<comment>Return:</comment>
  <info>string</info>  Returns a pseudorandom stream that can be used with <strong>sodium_crypto_stream_xchacha20_xor()</strong>.


id: sodium_crypto_stream_xchacha20_keygen
type: function
doc:
<comment>Description:</comment>
  Returns a secure random key
  
  Returns a secure random key for use with <strong>sodium_crypto_stream_xchacha20()</strong>.

<comment>Return:</comment>
  <info>string</info>  Returns a 32-byte secure random key for use with <strong>sodium_crypto_stream_xchacha20()</strong>.


id: sodium_crypto_stream_xchacha20_xor
type: function
doc:
<comment>Description:</comment>
  Encrypts a message using a nonce and a secret key (no authentication)
  
  Encrypts a <strong>$message</strong> using a <strong>$nonce</strong> and a secret <strong>$key</strong> (no authentication).
  
  This encryption is unauthenticated, and does not prevent chosen-ciphertext attacks. Make sure to
  combine the ciphertext with a Message Authentication Code, for example with
  <strong>sodium_crypto_aead_xchacha20poly1305_ietf_encrypt()</strong> function, or <strong>sodium_crypto_auth()</strong>.

<comment>Param:</comment>
  <info>string</info>  <strong>$message</strong>  The message to encrypt.
  <info>string</info>  <strong>$nonce</strong>    24-byte nonce.
  <info>string</info>  <strong>$key</strong>      Key, possibly generated from <strong>sodium_crypto_stream_xchacha20_keygen()</strong>.

<comment>Return:</comment>
  <info>string</info>  Encrypted message.

<comment>See Also:</comment>
   * <strong>sodium_crypto_stream_xchacha20_xor_ic()</strong>


id: sodium_crypto_stream_xchacha20_xor_ic
type: function
doc:
<comment>Description:</comment>
  Encrypts a message using a nonce and a secret key (no authentication)
  
  The function is similar to <strong>sodium_crypto_stream_xchacha20_xor()</strong> but adds the ability to set the
  initial value of the block counter to a non-zero value. This permits direct access to any block
  without having to compute the previous ones.
  
  This encryption is unauthenticated, and does not prevent chosen-ciphertext attacks. Make sure to
  combine the ciphertext with a Message Authentication Code, for example with
  <strong>sodium_crypto_aead_xchacha20poly1305_ietf_encrypt()</strong> function, or <strong>sodium_crypto_auth()</strong>.

<comment>Param:</comment>
  <info>string</info>  <strong>$message</strong>  The message to encrypt.
  <info>string</info>  <strong>$nonce</strong>    24-byte nonce.
  <info>int</info>     <strong>$counter</strong>  The initial value of the block counter.
  <info>string</info>  <strong>$key</strong>      Key, possibly generated from <strong>sodium_crypto_stream_xchacha20_keygen()</strong>.

<comment>Return:</comment>
  <info>string</info>  Encrypted message,  或者在失败时返回 <info>false</info>.

<comment>See Also:</comment>
   * <strong>sodium_crypto_stream_xchacha20_xor()</strong>


id: sodium_crypto_stream_xor
type: function
doc:
<comment>Description:</comment>
  Encrypt a message without authentication
  
  This function encrypts a message with XSalsa20, but does not provide any ciphertext guarantees
  about the plaintext.

<comment>Param:</comment>
  <info>string</info>  <strong>$message</strong>  The message to encrypt
  <info>string</info>  <strong>$nonce</strong>    A number that must be only used once, per message. 24 bytes long. This is a
                    large enough bound to generate randomly (i.e. <strong>random_bytes()</strong>).
  <info>string</info>  <strong>$key</strong>      Encryption key (256-bit).

<comment>Return:</comment>
  <info>string</info>  Encrypted message.


id: sodium_hex2bin
type: function
doc:
<comment>Description:</comment>
  Decodes a hexadecimally encoded binary string
  
  Decodes a hexadecimally encoded binary string.
  
  Like <strong>sodium_bin2hex()</strong>, <strong>sodium_hex2bin()</strong> is resistant to side-channel attacks while <strong>hex2bin()</strong> is
  not.

<comment>Param:</comment>
  <info>string</info>  <strong>$string</strong>  Hexadecimal representation of data.
  <info>string</info>  <strong>$ignore</strong>  Optional string argument for characters to ignore.

<comment>Return:</comment>
  <info>string</info>  Returns the binary representation of the given <strong>$string</strong> data.


id: sodium_increment
type: function
doc:
<comment>Description:</comment>
  Increment large number
  
  Treat the string as a little-endian unsigned integer, then increase it by 1. Constant-time.

<comment>Param:</comment>
  <info>string</info>  <strong>$string</strong>  String to increment.

<comment>Return:</comment>
  <info>void</info>  没有返回值。


id: sodium_memcmp
type: function
doc:
<comment>Description:</comment>
  Test for equality in constant-time
  
  Compare two strings in constant-time.
  
  In practice, you almost always want to use <strong>hash_equals()</strong> instead, since it provides the same logic
  but returns a <info>bool</info> instead of an <info>int</info>. However, if you're using the return value of a comparison in
  a calculation that's timing-sensitive, and worried about timing leaks with bool-to-int
  conversions, <strong>sodium_memcmp()</strong> is an ideal replacement.

<comment>Param:</comment>
  <info>string</info>  <strong>$string1</strong>  String to compare
  <info>string</info>  <strong>$string2</strong>  Other string to compare

<comment>Return:</comment>
  <info>int</info>  Returns <return>0</return> if both strings are equal; <return>-1</return> otherwise.


id: sodium_memzero
type: function
doc:
<comment>Description:</comment>
  Overwrite a string with NUL characters
  
  <strong>sodium_memzero()</strong> zeroes out the string that is passed by reference.

<comment>Param:</comment>
  <info>string</info>  <strong>$string</strong>  String.

<comment>Return:</comment>
  <info>void</info>  没有返回值。


id: sodium_pad
type: function
doc:
<comment>Description:</comment>
  Add padding data
  
  Right-pad a string to a desired length. Timing-safe.

<comment>Param:</comment>
  <info>string</info>  <strong>$string</strong>      Unpadded string.
  <info>int</info>     <strong>$block_size</strong>  The string will be padded until it is an even multiple of the block size.

<comment>Return:</comment>
  <info>string</info>  Padded string.


id: sodium_unpad
type: function
doc:
<comment>Description:</comment>
  Remove padding data
  
  Unpad a padded string. Timing-safe.

<comment>Param:</comment>
  <info>string</info>  <strong>$string</strong>      Padded string.
  <info>int</info>     <strong>$block_size</strong>  The block size for padding.

<comment>Return:</comment>
  <info>string</info>  Unpadded string.


id: solr_get_version
type: function
doc:
<comment>Description:</comment>
  返回当前Solr扩展的版本
  
  函数已字符串形式返回扩展的当前版本。

<comment>Return:</comment>
  <info>string</info>  获取成功则返回版本号，否则返回 <info>false</info> 。

<comment>See Also:</comment>
   * <strong>SolrUtils::getSolrVersion()</strong>


id: sort
type: function
doc:
<comment>Description:</comment>
  对数组升序排序
  
  对 <strong>$array</strong> 本身按照值（value）升序排序。
  
  如果两个成员完全相同，那么它们将保持原来的顺序。 在 PHP 8.0.0 之前，它们在排序数组中的相对顺序是未
  定义的。
  
  此函数为 <strong>$array</strong>
  中的元素赋与新的键名。这将删除原有的键名，而不是仅仅将键名重新排序。
  
  重置数组中的内部指针，指向第一个元素。

<comment>Param:</comment>
  <info>array</info>  <strong>$array</strong>  输入的数组。
  <info>int</info>    <strong>$flags</strong>  可选的第二个参数 <strong>$flags</strong> 可以用以下值改变排序的行为：
                 
                 排序类型标记： <info>SORT_REGULAR</info>  - 正常比较单元 详细描述参见 比较运算符 章节
                 <info>SORT_NUMERIC</info> - 单元被作为数字来比较<info>SORT_STRING</info> - 单元被作为字符串来比较
                 <info>SORT_LOCALE_STRING</info> - 根据当前的区域（locale）设置来把单元当作字符串比较，可以用
                 <strong>setlocale()</strong> 来改变。 <info>SORT_NATURAL</info> - 和 <strong>natsort()</strong> 类似对每个单元以“自然的顺序”对字符
                 串进行排序。 <info>SORT_FLAG_CASE</info> - 能够与 <info>SORT_STRING</info> 或 <info>SORT_NATURAL</info> 合并（OR 位运
                 算），不区分大小写排序字符串。
                 
                 <info>SORT_REGULAR</info>  - 正常比较单元 详细描述参见 比较运算符 章节
                 
                 <info>SORT_NUMERIC</info> - 单元被作为数字来比较
                 
                 <info>SORT_STRING</info> - 单元被作为字符串来比较
                 
                 <info>SORT_LOCALE_STRING</info> - 根据当前的区域（locale）设置来把单元当作字符串比较，可以用
                 <strong>setlocale()</strong> 来改变。
                 
                 <info>SORT_NATURAL</info> - 和 <strong>natsort()</strong> 类似对每个单元以“自然的顺序”对字符串进行排序。
                 
                 <info>SORT_FLAG_CASE</info> - 能够与 <info>SORT_STRING</info> 或 <info>SORT_NATURAL</info> 合并（OR 位运算），不区分大小写
                 排序字符串。

<comment>Return:</comment>
  <info>true</info>  总是返回 <info>true</info>。

<comment>See Also:</comment>
   * <strong>rsort()</strong>
   * 数组排序函数对比


id: soundex
type: function
doc:
<comment>Description:</comment>
  Calculate the soundex key of a string
  
  Calculates the soundex key of <strong>$string</strong>.
  
  Soundex keys have the property that words pronounced similarly produce the same soundex key, and
  can thus be used to simplify searches in databases where you know the pronunciation but not the
  spelling.
  
  This particular soundex function is one described by Donald Knuth in "The Art Of Computer
  Programming, vol. 3: Sorting And Searching", Addison-Wesley (1973), pp. 391-392.

<comment>Param:</comment>
  <info>string</info>  <strong>$string</strong>  The input string.

<comment>Return:</comment>
  <info>string</info>  Returns the soundex key as a <info>string</info> with four characters. If at least one letter is
          contained in <strong>$string</strong>, the returned string starts with a letter. Otherwise <return>"0000"</return> is
          returned.

<comment>See Also:</comment>
   * <strong>levenshtein()</strong>
   * <strong>metaphone()</strong>
   * <strong>similar_text()</strong>


id: spl_autoload
type: function
doc:
<comment>Description:</comment>
  __autoload()函数的默认实现
  
  本函数用于 <strong>__autoload()</strong> 的默认实现。如果未指定任何参数调用 <strong>spl_autoload_register()</strong>，则此函数在
  <strong>__autoload()</strong> 调用时会自动使用此函数。

<comment>Param:</comment>
  <info>string</info>       <strong>$class</strong>            已实例化的类（和命名空间）的名字。
  <info>string|null</info>  <strong>$file_extensions</strong>  在默认情况下，本函数先将类名转换成小写，再在小写的类名后加上 .inc
                                 或 .php 的扩展名作为文件名，然后在所有的包含路径（include paths）中
                                 检查是否存在该文件。

<comment>Return:</comment>
  <info>void</info>  没有返回值。


id: spl_autoload_call
type: function
doc:
<comment>Description:</comment>
  尝试所有已注册的 __autoload() 函数来装载请求类
  
  该函数可用于使用已注册的 __autoload 函数手动搜索类或接口。

<comment>Param:</comment>
  <info>string</info>  <strong>$class</strong>  搜索的类名。

<comment>Return:</comment>
  <info>void</info>  没有返回值。


id: spl_autoload_extensions
type: function
doc:
<comment>Description:</comment>
  注册并返回 spl_autoload 的默认文件扩展名
  
  本函数可以修改和检查 <strong>__autoload()</strong> 后备函数 <strong>spl_autoload()</strong> 将使用的扩展名。
  
  在定义的文件扩展名之间不应该有空格。

<comment>Param:</comment>
  <info>string|null</info>  <strong>$file_extensions</strong>  如果为 <info>null</info>，只返回当前扩展名列表，每个扩展名用逗号分隔。要修改文件
                                 扩展名列表，只需在单个字符串中，用逗号分割的新文件扩展名列表调用此
                                 函数即可。

<comment>Return:</comment>
  <info>string</info>  逗号分隔的 <strong>spl_autoload()</strong> 的默认文件扩展名。


id: spl_autoload_functions
type: function
doc:
<comment>Description:</comment>
  返回所有已注册的 __autoload() 函数
  
  获取所有已注册的 __autoload() 函数。

<comment>Return:</comment>
  <info>array</info>  包含所有已注册的 __autoload 函数的 <info>array</info>。如果没有已注册的函数或者自动加载队列未激活，则返
         回值将是空数组。


id: spl_autoload_register
type: function
doc:
<comment>Description:</comment>
  注册指定的函数作为 __autoload 的实现
  
  使用 spl 提供的 __autoload 队列注册函数。如果队列尚未激活，则将激活。
  
  如果在代码中已经实现了 <strong>__autoload()</strong> 函数，必须显式注册到 <strong>__autoload()</strong> 队列中。因为
  <strong>spl_autoload_register()</strong> 通过 <strong>spl_autoload()</strong> 或 <strong>spl_autoload_call()</strong> 有效替换 <strong>__autoload()</strong> 函数的存
  储缓存。
  
  如果需要多个自动加载函数，则 <strong>spl_autoload_register()</strong>  允许这么做。它有效的创建了自动加载函数队列，
  并按定义的顺序进行遍历。相比之下，<strong>__autoload()</strong> 只能定义一次。

<comment>Param:</comment>
  <info>callable|null</info>  <strong>$callback</strong>  正在注册的自动装载函数。如果为 <info>null</info>，则将注册 <strong>spl_autoload()</strong> 的默认实
                            现。
                            
                            <strong>$class</strong> 将是不包含开头反斜线的完整标识符。
  <info>bool</info>           <strong>$throw</strong>     此参数指定 <strong>spl_autoload_register()</strong> 在无法注册 <strong>$callback</strong> 时是否应抛出异
                            常。
                            
                            从 PHP 8.0.0 开始，将忽略该参数，如果设置为 <info>false</info>，则会发出 notice。
                            <strong>spl_autoload_register()</strong> 现在总是会在无效参数上抛出 <class>TypeError</class>。
  <info>bool</info>           <strong>$prepend</strong>   如果是 true，<strong>spl_autoload_register()</strong> 会添加函数到队列之首，而不是队列尾
                            部。

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>__autoload()</strong>


id: spl_autoload_unregister
type: function
doc:
<comment>Description:</comment>
  注销已实现的 __autoload() 函数
  
  从自动装载函数队列中移除函数。如果该函数队列处于激活状态且在指定函数移除后为空，则函数队列将会失
  效。
  
  如果该函数导致自动装载函数队列失效，之前存在的 __autoload 函数也不会重新激活。

<comment>Param:</comment>
  <info>callable</info>  <strong>$callback</strong>  要注销的自动装载函数。

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。


id: spl_classes
type: function
doc:
<comment>Description:</comment>
  返回所有可用的SPL类
  
  本函数返回当前所有可用的 SPL 类的数组。

<comment>Return:</comment>
  <info>array</info>  Returns an <info>array</info> containing the currently available SPL classes.


id: spl_object_hash
type: function
doc:
<comment>Description:</comment>
  返回指定对象的 hash id
    
  
  本函数为对象返回唯一标识符。只要对象没有销毁，这个 id 可用作保存对象的散列键，或者用于标识对象。一
  旦对象销毁，它的散列值可能会被其它对象重用。此行为类似为 <strong>spl_object_id()</strong>。

<comment>Param:</comment>
  <info>object</info>  <strong>$object</strong>  任何对象。

<comment>Return:</comment>
  <info>string</info>  字符串，对于当前存在的每个对象都是唯一的，且对同一个对象始终相同。

<comment>See Also:</comment>
   * <strong>spl_object_id()</strong>


id: spl_object_id
type: function
doc:
<comment>Description:</comment>
  Return the integer object handle for given object
    
  
  This function returns a unique identifier for the object. The object id is unique for the lifetime
  of the object. Once the object is destroyed, its id may be reused for other objects. This behavior
  is similar to <strong>spl_object_hash()</strong>.

<comment>Param:</comment>
  <info>object</info>  <strong>$object</strong>  Any object.

<comment>Return:</comment>
  <info>int</info>  An integer identifier that is unique for each currently existing object and is always the
       same for each object.


id: sprintf
type: function
doc:
<comment>Description:</comment>
  返回格式化字符串
  
  返回一个根据格式化字符串 <strong>$format</strong> 生成的字符串。

<comment>Param:</comment>
  <info>string</info>  <strong>$format</strong>  format 字符串通常由零或多个指令组成：普通字符（不包含 <return>%</return>）——直接复制到结果，转换规
                   范——获取每个参数的结果。
                   
                   转换规范遵循此原型： <return>%[argnum$][flags][width][.precision]specifier</return>.
                   
                   整数后跟美元符号 <return>$</return>，用于指定转换中要处理的参数数量。
                   
                   标志标志说明<return>-</return> 在指定字段宽度时左对齐，默认右对齐 <return>+</return> 正数的加号 <return>+</return>前缀，默认负数的前
                   缀是负号。 <return> </return>(space) 空格填充结果。这是默认设置。 <return>0</return> 仅用 0 进行左侧数字填充。使用
                   <return>s</return> 标志符可以右侧填充。 <return>'</return>(char) 用字符（char）填充结果。
                   
                   要么是整数，表示转换结果应该有多少个字符（最少），要么是 <return>*</return>。如果使用 <return>*</return>，那么宽度
                   将作为额外的整数值提供，位于格式化符号之前。
                   
                   小数点 <return>.</return>，可选的后跟整数或者 <return>*</return>，其含义取决于格式化符号： <return>e</return>、<return>E</return>、<return>f</return>、<return>F</return> 标志符：小数
                   点后需要打印的位数（默认是 6）。 <return>g</return>、<return>G</return>、<return>h</return>、<return>H</return> 标志符：这是要打印的最大有效位数。 <return>s</return>
                   标志符：充当分界点，为字符串设置最大字符限制。   如果小数点没有明确的精度值，则假
                   设是 0。如果使用 <return>*</return>，则精度将作为额外的整数值提供，位于格式化符号之前。
                   
                   <return>e</return>、<return>E</return>、<return>f</return>、<return>F</return> 标志符：小数点后需要打印的位数（默认是 6）。
                   
                   <return>g</return>、<return>G</return>、<return>h</return>、<return>H</return> 标志符：这是要打印的最大有效位数。
                   
                   <return>s</return> 标志符：充当分界点，为字符串设置最大字符限制。
                   
                   如果小数点没有明确的精度值，则假设是 0。如果使用 <return>*</return>，则精度将作为额外的整数值提
                   供，位于格式化符号之前。
                   
                   标志符标志符说明<return>%</return> 字面意思的百分号字符。不需要参数。 <return>b</return> 参数视为整数并以二进制数字
                   呈现。 <return>c</return> 参数视为整数并以 ASCII 字符呈现。 <return>d</return> 参数视为整数并以（有符号）十进制数字
                   呈现。 <return>e</return> 参数当做科学符号处理（例如 1.2e+2）。 <return>E</return> 与 <return>e</return> 标志符相同，但使用大写字母
                   （例如 1.2E+2）。 <return>f</return> 参数当做浮点数处理且作为浮点数呈现（locale aware）。 <return>F</return> 参数当
                   做浮点数处理且作为浮点数呈现（non-locale aware）。 <return>g</return> 通用格式。  Let P equal the
                   precision if nonzero, 6 if the precision is omitted, or 1 if the precision is
                   zero. Then, if a conversion with style E would have an exponent of X:  If P &gt;
                   X ≥ −4, the conversion is with style f and precision P − (X + 1). Otherwise, the
                   conversion is with style e and precision P − 1. <return>G</return> Like the <return>g</return> specifier but uses <return>E</return>
                   and <return>f</return>. <return>h</return> Like the <return>g</return> specifier but uses <return>F</return>. Available as of PHP 8.0.0. <return>H</return> Like the <return>g</return>
                   specifier but uses <return>E</return> and <return>F</return>. Available as of PHP 8.0.0. <return>o</return> 参数视为整数并以八进制数
                   字来呈现。 <return>s</return> 参数视为字符串来呈现。 <return>u</return> 参数视为整数并以无符号十进制数字呈现。 <return>x</return> 参
                   数视为整数并作为十六进制数字呈现（带小写字母）。 <return>X</return> 参数视为整数并作为十六进制数字
                   呈现（带大写字母）。
                   
                   通用格式。
                   
                   Let P equal the precision if nonzero, 6 if the precision is omitted, or 1 if the
                   precision is zero. Then, if a conversion with style E would have an exponent of
                   X:
                   
                   If P &gt; X ≥ −4, the conversion is with style f and precision P − (X + 1).
                   Otherwise, the conversion is with style e and precision P − 1.
                   
                   <return>c</return> 类型标志符忽略填充和宽度
                   
                   Attempting to use a combination of the string and width specifiers with character
                   sets that require more than one byte per character may result in unexpected
                   results
                   
                   变量将会强制转换为适合标志符的类型： 类型处理类型标志符<info>string</info><return>s</return><info>int</info><return>d</return>, <return>u</return>, <return>c</return>, <return>o</return>, <return>x</return>,
                   <return>X</return>, <return>b</return><info>float</info><return>e</return>, <return>E</return>, <return>f</return>, <return>F</return>, <return>g</return>, <return>G</return>, <return>h</return>, <return>H</return>
  <info>mixed</info>   <strong>$values</strong>  

<comment>Return:</comment>
  <info>string</info>  返回一个根据格式化字符串 <strong>$format</strong> 生成的字符串。

<comment>See Also:</comment>
   * <strong>printf()</strong>
   * <strong>fprintf()</strong>
   * <strong>vprintf()</strong>
   * <strong>vsprintf()</strong>
   * <strong>vfprintf()</strong>
   * <strong>sscanf()</strong>
   * <strong>fscanf()</strong>
   * <strong>number_format()</strong>
   * <strong>date()</strong>


id: sqlsrv_begin_transaction
type: function
doc:
<comment>Description:</comment>
  Begins a database transaction
  
  The transaction begun by <strong>sqlsrv_begin_transaction()</strong> includes  all statements that were executed
  after the call to  <strong>sqlsrv_begin_transaction()</strong> and before calls to  <strong>sqlsrv_rollback()</strong> or
  <strong>sqlsrv_commit()</strong>.  Explicit transactions should be started and committed or rolled back using
  these functions instead of executing SQL statements that begin and commit/roll  back transactions.
  For more information, see  SQLSRV Transactions.

<comment>Param:</comment>
  <info>resource</info>  <strong>$conn</strong>  The connection resource returned by a call to <strong>sqlsrv_connect()</strong>.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>sqlsrv_commit()</strong>
   * <strong>sqlsrv_rollback()</strong>


id: sqlsrv_cancel
type: function
doc:
<comment>Description:</comment>
  Cancels a statement
  
  Cancels a statement. Any results associated with the statement that have not  been consumed are
  deleted. After <strong>sqlsrv_cancel()</strong> has been  called, the specified statement can be re-executed if it
  was created with  <strong>sqlsrv_prepare()</strong>. Calling <strong>sqlsrv_cancel()</strong>  is not necessary if all the results
  associated with the statement have been  consumed.

<comment>Param:</comment>
  <info>resource</info>  <strong>$stmt</strong>  The statement resource to be cancelled.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>sqlsrv_free_stmt()</strong>
   * <strong>sqlsrv_prepare()</strong>


id: sqlsrv_client_info
type: function
doc:
<comment>Description:</comment>
  Returns information about the client and specified connection
  
  Returns information about the client and specified connection

<comment>Param:</comment>
  <info>resource</info>  <strong>$conn</strong>  The connection about which information is returned.

<comment>Return:</comment>
  <info>array</info>  Returns an associative array with keys described in the table below.  Returns <info>false</info>
         otherwise.  Array returned by
         sqlsrv_client_infoKeyDescriptionDriverDllNameSQLNCLI10.DLLDriverODBCVerODBC version
         (xx.yy)DriverVerSQL Server Native Client DLL version (10.5.xxx)ExtensionVerphp_sqlsrv.dll
         version (2.0.xxx.x)

<comment>See Also:</comment>
   * <strong>sqlsrv_server_info()</strong>


id: sqlsrv_close
type: function
doc:
<comment>Description:</comment>
  Closes an open connection and releases resourses associated with the connection
  
  Closes an open connection and releases resourses associated with the connection.

<comment>Param:</comment>
  <info>resource</info>  <strong>$conn</strong>  The connection to be closed.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>sqlsrv_connect()</strong>


id: sqlsrv_commit
type: function
doc:
<comment>Description:</comment>
  Commits a transaction that was begun with sqlsrv_begin_transaction
  
  Commits a transaction that was begun with <strong>sqlsrv_begin_transaction()</strong>.  The connection is returned
  to auto-commit mode after <strong>sqlsrv_commit()</strong>  is called. The transaction that is committed includes
  all statements that were  executed after the call to <strong>sqlsrv_begin_transaction()</strong>.  Explicit
  transactions should be started and committed or rolled back using these  functions instead of
  executing SQL statements that begin and commit/roll back  transactions. For more information, see
  SQLSRV Transactions.

<comment>Param:</comment>
  <info>resource</info>  <strong>$conn</strong>  The connection on which the transaction is to be committed.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>sqlsrv_begin_transaction()</strong>
   * <strong>sqlsrv_rollback()</strong>


id: sqlsrv_configure
type: function
doc:
<comment>Description:</comment>
  Changes the driver error handling and logging configurations
  
  Changes the driver error handling and logging configurations.

<comment>Param:</comment>
  <info>string</info>  <strong>$setting</strong>  The name of the setting to set. The possible values are
                    "WarningsReturnAsErrors", "LogSubsystems", and "LogSeverity".
  <info>mixed</info>   <strong>$value</strong>    The value of the specified setting. The following table shows possible values:
                    Error and Logging Setting OptionsSettingOptionsWarningsReturnAsErrors1 (<info>true</info>) or
                    0 (<info>false</info>)LogSubsystemsSQLSRV_LOG_SYSTEM_ALL (-1)  SQLSRV_LOG_SYSTEM_CONN (2)
                    SQLSRV_LOG_SYSTEM_INIT (1)  SQLSRV_LOG_SYSTEM_OFF (0)  SQLSRV_LOG_SYSTEM_STMT
                    (4)  SQLSRV_LOG_SYSTEM_UTIL (8)LogSeveritySQLSRV_LOG_SEVERITY_ALL (-1)
                    SQLSRV_LOG_SEVERITY_ERROR (1)  SQLSRV_LOG_SEVERITY_NOTICE (4)
                    SQLSRV_LOG_SEVERITY_WARNING (2)

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * SQLSRV Error Handling.
   * Logging SQLSRV Activity.


id: sqlsrv_connect
type: function
doc:
<comment>Description:</comment>
  Opens a connection to a Microsoft SQL Server database
  
  Opens a connection to a Microsoft SQL Server database. By default, the connection  is attempted
  using Windows Authentication. To connect using SQL Server  Authentication, include "UID" and "PWD"
  in the connection options array.

<comment>Param:</comment>
  <info>string</info>  <strong>$serverName</strong>      The name of the server to which a connection is established. To connect
                           to a specific instance, follow the server name with a backward slash  and
                           the instance name (e.g. serverName\sqlexpress).
  <info>array</info>   <strong>$connectionInfo</strong>  An associative array that specifies options for connecting to the server.
                           If values for the UID and PWD keys are not specified, the connection
                           will be attempted using Windows Authentication. For a complete list of
                           supported  keys, see SQLSRV Connection Options.

<comment>Return:</comment>
  <info>resource</info>  A connection resource. If a connection cannot be successfully opened, <info>false</info> is returned.

<comment>See Also:</comment>
   * <strong>sqlsrv_close()</strong>
   * <strong>sqlsrv_errors()</strong>
   * <strong>sqlsrv_query()</strong>


id: sqlsrv_errors
type: function
doc:
<comment>Description:</comment>
  Returns error and warning information about the last SQLSRV operation performed
  
  Returns error and warning information about the last SQLSRV operation performed.

<comment>Param:</comment>
  <info>int</info>  <strong>$errorsOrWarnings</strong>  Determines whether error information, warning information, or both are
                          returned. If this parameter is not supplied, both error information and
                          warning information are returned. The following are the supported values
                          for this parameter: SQLSRV_ERR_ALL, SQLSRV_ERR_ERRORS,
                          SQLSRV_ERR_WARNINGS.

<comment>Return:</comment>
  <info>mixed</info>  If errors and/or warnings occurred on the last sqlsrv operation, an array of  arrays
         containing error information is returned. If no errors and/or warnings  occurred on the
         last sqlsrv operation, <info>null</info> is returned. The following table  describes the structure of
         the returned arrays: Array returned by sqlsrv_errorsKeyDescriptionSQLSTATEFor errors that
         originate from the ODBC driver, the SQLSTATE returned  by ODBC. For errors that originate
         from the Microsoft Drivers for PHP for  SQL Server, a SQLSTATE of IMSSP. For warnings that
         originate from the  Microsoft Drivers for PHP for SQL Server, a SQLSTATE of 01SSP. codeFor
         errors that originate from SQL Server, the native SQL Server  error code. For errors that
         originate from the ODBC driver, the error  code returned by ODBC. For errors that originate
         from the Microsoft Drivers  for PHP for SQL Server, the Microsoft Drivers for PHP for SQL
         Server error code. messageA description of the error.

<comment>See Also:</comment>
   * <strong>sqlsrv_configure()</strong>


id: sqlsrv_execute
type: function
doc:
<comment>Description:</comment>
  Executes a statement prepared with sqlsrv_prepare
  
  Executes a statement prepared with <strong>sqlsrv_prepare()</strong>. This  function is ideal for executing a
  prepared statement multiple times with  different parameter values.

<comment>Param:</comment>
  <info>resource</info>  <strong>$stmt</strong>  A statement resource returned by <strong>sqlsrv_prepare()</strong>.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>sqlsrv_prepare()</strong>
   * <strong>sqlsrv_query()</strong>


id: sqlsrv_fetch
type: function
doc:
<comment>Description:</comment>
  Makes the next row in a result set available for reading
  
  Makes the next row in a result set available for reading. Use  <strong>sqlsrv_get_field()</strong> to read the
  fields of the row.

<comment>Param:</comment>
  <info>resource</info>  <strong>$stmt</strong>    A statement resource created by executing <strong>sqlsrv_query()</strong>  or <strong>sqlsrv_execute()</strong>.
  <info>int</info>       <strong>$row</strong>     The row to be accessed. This parameter can only be used if the specified
                     statement was prepared with a scrollable cursor. In that case, this parameter
                     can take on one of the following values:
                     SQLSRV_SCROLL_NEXTSQLSRV_SCROLL_PRIORSQLSRV_SCROLL_FIRSTSQLSRV_SCROLL_LASTSQLSRV_SCROLL_ABSOLUTESQLSRV_SCROLL_RELATIVE
  <info>int</info>       <strong>$offset</strong>  Specifies the row to be accessed if the row parameter is set to
                     <info>SQLSRV_SCROLL_ABSOLUTE</info> or <info>SQLSRV_SCROLL_RELATIVE</info>. Note that the first row in a
                     result set has index 0.

<comment>Return:</comment>
  <info>mixed</info>  Returns <info>true</info> if the next row of a result set was successfully retrieved,  <info>false</info> if an error
         occurs, and <info>null</info> if there are no more rows in the result set.

<comment>See Also:</comment>
   * <strong>sqlsrv_get_field()</strong>
   * <strong>sqlsrv_fetch_array()</strong>
   * <strong>sqlsrv_fetch_object()</strong>


id: sqlsrv_fetch_array
type: function
doc:
<comment>Description:</comment>
  Returns a row as an array
  
  Returns the next available row of data as an associative array, a numeric  array, or both (the
  default).

<comment>Param:</comment>
  <info>resource</info>  <strong>$stmt</strong>       A statement resource returned by sqlsrv_query or sqlsrv_prepare.
  <info>int</info>       <strong>$fetchType</strong>  A predefined constant specifying the type of array to return. Possible
                        values are <info>SQLSRV_FETCH_ASSOC</info>,  <info>SQLSRV_FETCH_NUMERIC</info>, and  <info>SQLSRV_FETCH_BOTH</info>
                        (the default).
                        
                        A fetch type of SQLSRV_FETCH_ASSOC should not be used when consuming a
                        result set with multiple columns of the same name.
  <info>int</info>       <strong>$row</strong>        Specifies the row to access in a result set that uses a scrollable cursor.
                        Possible values are <info>SQLSRV_SCROLL_NEXT</info>,  <info>SQLSRV_SCROLL_PRIOR</info>,
                        <info>SQLSRV_SCROLL_FIRST</info>,  <info>SQLSRV_SCROLL_LAST</info>, <info>SQLSRV_SCROLL_ABSOLUTE</info> and,
                        <info>SQLSRV_SCROLL_RELATIVE</info> (the default). When this parameter  is specified, the
                        <strong>$fetchType</strong> must be explicitly defined.
  <info>int</info>       <strong>$offset</strong>     Specifies the row to be accessed if the row parameter is set to
                        <info>SQLSRV_SCROLL_ABSOLUTE</info> or <info>SQLSRV_SCROLL_RELATIVE</info>. Note that the first row in
                        a result set has index 0.

<comment>Return:</comment>
  <info>array</info>  Returns an array on success, <info>null</info> if there are no more rows to return, and  <info>false</info> if an
         error occurs.

<comment>See Also:</comment>
   * <strong>sqlsrv_connect()</strong>
   * <strong>sqlsrv_query()</strong>
   * <strong>sqlsrv_errors()</strong>
   * <strong>sqlsrv_fetch()</strong>


id: sqlsrv_fetch_object
type: function
doc:
<comment>Description:</comment>
  Retrieves the next row of data in a result set as an object
  
  Retrieves the next row of data in a result set as an instance of the specified  class with
  properties that match the row field names and values that correspond  to the row field values.

<comment>Param:</comment>
  <info>resource</info>  <strong>$stmt</strong>        A statement resource created by <strong>sqlsrv_query()</strong> or  <strong>sqlsrv_execute()</strong>.
  <info>string</info>    <strong>$className</strong>   The name of the class to instantiate. If no class name is specified,
                         stdClass is instantiated.
  <info>array</info>     <strong>$ctorParams</strong>  Values passed to the constructor of the specified class. If the constructor
                         of the specified class takes parameters, the ctorParams array must be
                         supplied.
  <info>int</info>       <strong>$row</strong>         The row to be accessed. This parameter can only be used if the specified
                         statement was prepared with a scrollable cursor. In that case, this
                         parameter  can take on one of the following values:
                         SQLSRV_SCROLL_NEXTSQLSRV_SCROLL_PRIORSQLSRV_SCROLL_FIRSTSQLSRV_SCROLL_LASTSQLSRV_SCROLL_ABSOLUTESQLSRV_SCROLL_RELATIVE
  <info>int</info>       <strong>$offset</strong>      Specifies the row to be accessed if the row parameter is set to
                         <info>SQLSRV_SCROLL_ABSOLUTE</info> or <info>SQLSRV_SCROLL_RELATIVE</info>. Note that the first row
                         in a result set has index 0.

<comment>Return:</comment>
  <info>mixed</info>  Returns an object on success, <info>null</info> if there are no more rows to return,  and <info>false</info> if an
         error occurs or if the specified class does not exist.

<comment>See Also:</comment>
   * <strong>sqlsrv_fetch()</strong>
   * <strong>sqlsrv_fetch_array()</strong>


id: sqlsrv_field_metadata
type: function
doc:
<comment>Description:</comment>
  Retrieves metadata for the fields of a statement prepared by 
    sqlsrv_prepare or sqlsrv_query
    
  
  Retrieves metadata for the fields of a statement prepared by  <strong>sqlsrv_prepare()</strong> or <strong>sqlsrv_query()</strong>.
  <strong>sqlsrv_field_metadata()</strong> can be called on a statement before  or after statement execution.

<comment>Param:</comment>
  <info>resource</info>  <strong>$stmt</strong>  The statement resource for which metadata is returned.

<comment>Return:</comment>
  <info>mixed</info>  Returns an array of arrays on success. Otherwise, <info>false</info> is returned.  Each returned array
         is described by the following table: Array returned by
         sqlsrv_field_metadataKeyDescriptionNameThe name of the field.TypeThe numeric value for the
         SQL type.SizeThe number of characters for fields of character type, the number of  bytes
         for fields of binary type, or <info>null</info> for other types.PrecisionThe precision for types of
         variable precision, <info>null</info> for other types.ScaleThe scale for types of variable scale, <info>null</info>
         for other types.NullableAn enumeration indicating whether the column is nullable, not
         nullable,  or if it is not known. For more information, see sqlsrv_field_metadata  in the
         Microsoft SQLSRV documentation.

<comment>See Also:</comment>
   * <strong>sqlsrv_client_info()</strong>


id: sqlsrv_free_stmt
type: function
doc:
<comment>Description:</comment>
  Frees all resources for the specified statement
  
  Frees all resources for the specified statement. The statement cannot be used  after
  <strong>sqlsrv_free_stmt()</strong> has been called on it. If  <strong>sqlsrv_free_stmt()</strong> is called on an in-progress
  statement  that alters server state, statement execution is terminated and the statement  is
  rolled back.

<comment>Param:</comment>
  <info>resource</info>  <strong>$stmt</strong>  The statement for which resources are freed.  Note that <info>null</info> is a valid parameter
                   value. This allows the function to be  called multiple times in a script.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>sqlsrv_cancel()</strong>


id: sqlsrv_get_config
type: function
doc:
<comment>Description:</comment>
  Returns the value of the specified configuration setting
  
  Returns the value of the specified configuration setting.

<comment>Param:</comment>
  <info>string</info>  <strong>$setting</strong>  The name of the setting for which the value is returned. For a list of
                    configurable settings, see <strong>sqlsrv_configure()</strong>.

<comment>Return:</comment>
  <info>mixed</info>  Returns the value of the specified setting. If an invalid setting is specified,  <info>false</info> is
         returned.

<comment>See Also:</comment>
   * <strong>sqlsrv_configure()</strong>


id: sqlsrv_get_field
type: function
doc:
<comment>Description:</comment>
  Gets field data from the currently selected row
  
  Gets field data from the currently selected row. Fields must be accessed in  order. Field indices
  start at 0.

<comment>Param:</comment>
  <info>resource</info>  <strong>$stmt</strong>        A statement resource returned by <strong>sqlsrv_query()</strong> or  <strong>sqlsrv_execute()</strong>.
  <info>int</info>       <strong>$fieldIndex</strong>  The index of the field to be retrieved. Field indices start at 0. Fields
                         must be accessed in order. i.e. If you access field index 1, then field
                         index 0 will not be available.
  <info>int</info>       <strong>$getAsType</strong>   The PHP data type for the returned field data. If this parameter is not
                         set, the field data will be returned as its default PHP data type. For
                         information about default PHP data types, see  Default PHP Data Types  in
                         the Microsoft SQLSRV documentation.

<comment>Return:</comment>
  <info>mixed</info>  Returns data from the specified field on success. Returns <info>false</info> otherwise.

<comment>See Also:</comment>
   * <strong>sqlsrv_fetch()</strong>
   * <strong>sqlsrv_fetch_array()</strong>
   * <strong>sqlsrv_fetch_object()</strong>


id: sqlsrv_has_rows
type: function
doc:
<comment>Description:</comment>
  Indicates whether the specified statement has rows
  
  Indicates whether the specified statement has rows.

<comment>Param:</comment>
  <info>resource</info>  <strong>$stmt</strong>  A statement resource returned by <strong>sqlsrv_query()</strong> or  <strong>sqlsrv_execute()</strong>.

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info> if the specified statement has rows and <info>false</info> if the statement  does not have
        rows or if an error occurred.

<comment>See Also:</comment>
   * <strong>sqlsrv_num_rows()</strong>
   * <strong>sqlsrv_query()</strong>


id: sqlsrv_next_result
type: function
doc:
<comment>Description:</comment>
  Makes the next result of the specified statement active
  
  Makes the next result of the specified statement active. Results include result  sets, row counts,
  and output parameters.

<comment>Param:</comment>
  <info>resource</info>  <strong>$stmt</strong>  The statement on which the next result is being called.

<comment>Return:</comment>
  <info>mixed</info>  Returns <info>true</info> if the next result was successfully retrieved, <info>false</info> if an error  occurred,
         and <info>null</info> if there are no more results to retrieve.

<comment>See Also:</comment>
   * <strong>sqlsrv_query()</strong>
   * <strong>sqlsrv_fetch_array()</strong>
   * <strong>sqlsrv_rows_affected()</strong>


id: sqlsrv_num_fields
type: function
doc:
<comment>Description:</comment>
  Retrieves the number of fields (columns) on a statement
  
  Retrieves the number of fields (columns) on a statement.

<comment>Param:</comment>
  <info>resource</info>  <strong>$stmt</strong>  The statement for which the number of fields is returned.  <strong>sqlsrv_num_fields()</strong>
                   can be called on a statement before  or after statement execution.

<comment>Return:</comment>
  <info>mixed</info>  Returns the number of fields on success. Returns <info>false</info> otherwise.

<comment>See Also:</comment>
   * <strong>sqlsrv_field_metadata()</strong>
   * <strong>sqlsrv_fetch()</strong>
   * <strong>sqlsrv_get_field()</strong>


id: sqlsrv_num_rows
type: function
doc:
<comment>Description:</comment>
  Retrieves the number of rows in a result set
  
  Retrieves the number of rows in a result set. This function requires that the  statement resource
  be created with a static or keyset cursor. For more information,  see <strong>sqlsrv_query()</strong>,
  <strong>sqlsrv_prepare()</strong>,  or Specifying a Cursor Type and Selecting Rows  in the Microsoft SQLSRV
  documentation.

<comment>Param:</comment>
  <info>resource</info>  <strong>$stmt</strong>  The statement for which the row count is returned. The statement resource  must
                   be created with a static or keyset cursor. For more information, see
                   <strong>sqlsrv_query()</strong>, <strong>sqlsrv_prepare()</strong>, or  Specifying a Cursor Type and Selecting Rows
                   in the Microsoft SQLSRV documentation.

<comment>Return:</comment>
  <info>mixed</info>  Returns the number of rows retrieved on success and <info>false</info> if an error occurred.  If a
         forward cursor (the default) or dynamic cursor is used, <info>false</info> is returned.

<comment>See Also:</comment>
   * <strong>sqlsrv_has_rows()</strong>
   * <strong>sqlsrv_rows_affected()</strong>


id: sqlsrv_prepare
type: function
doc:
<comment>Description:</comment>
  Prepares a query for execution
  
  Prepares a query for execution. This function is ideal for preparing a query  that will be
  executed multiple times with different parameter values.

<comment>Param:</comment>
  <info>resource</info>  <strong>$conn</strong>     A connection resource returned by <strong>sqlsrv_connect()</strong>.
  <info>string</info>    <strong>$sql</strong>      The string that defines the query to be prepared and executed.
  <info>array</info>     <strong>$params</strong>   An array specifying parameter information when executing a parameterized
                      query. Array elements can be any of the following: A literal valueA PHP
                      variableAn array with this structure:  array($value [, $direction [, $phpType
                      [, $sqlType]]]) The following table describes the elements in the array
                      structure above:
  <info>array</info>     <strong>$options</strong>  An array specifying query property options. The supported keys are described
                      in the following table:

<comment>Return:</comment>
  <info>mixed</info>  Returns a statement resource on success and <info>false</info> if an error occurred.

<comment>See Also:</comment>
   * <strong>sqlsrv_execute()</strong>
   * <strong>sqlsrv_query()</strong>


id: sqlsrv_query
type: function
doc:
<comment>Description:</comment>
  Prepares and executes a query
  
  Prepares and executes a query.

<comment>Param:</comment>
  <info>resource</info>  <strong>$conn</strong>     A connection resource returned by <strong>sqlsrv_connect()</strong>.
  <info>string</info>    <strong>$sql</strong>      The string that defines the query to be prepared and executed.
  <info>array</info>     <strong>$params</strong>   An array specifying parameter information when executing a parameterized
                      query.  Array elements can be any of the following: A literal valueA PHP
                      variableAn array with this structure:  array($value [, $direction [, $phpType
                      [, $sqlType]]]) The following table describes the elements in the array
                      structure above:
  <info>array</info>     <strong>$options</strong>  An array specifying query property options. The supported keys are described
                      in the following table:

<comment>Return:</comment>
  <info>mixed</info>  Returns a statement resource on success and <info>false</info> if an error occurred.

<comment>See Also:</comment>
   * <strong>sqlsrv_prepare()</strong>
   * <strong>sqlsrv_execute()</strong>


id: sqlsrv_rollback
type: function
doc:
<comment>Description:</comment>
  Rolls back a transaction that was begun with 
    sqlsrv_begin_transaction
  
  Rolls back a transaction that was begun with <strong>sqlsrv_begin_transaction()</strong>  and returns the
  connection to auto-commit mode.

<comment>Param:</comment>
  <info>resource</info>  <strong>$conn</strong>  The connection resource returned by a call to <strong>sqlsrv_connect()</strong>.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>sqlsrv_begin_transaction()</strong>
   * <strong>sqlsrv_commit()</strong>


id: sqlsrv_rows_affected
type: function
doc:
<comment>Description:</comment>
  Returns the number of rows modified by the last INSERT, UPDATE, or 
    DELETE query executed
  
  Returns the number of rows modified by the last INSERT, UPDATE, or DELETE  query executed. For
  information about the number of rows returned by a SELECT  query, see <strong>sqlsrv_num_rows()</strong>.

<comment>Param:</comment>
  <info>resource</info>  <strong>$stmt</strong>  The executed statement resource for which the number of affected rows is
                   returned.

<comment>Return:</comment>
  <info>int|false</info>  Returns the number of rows affected by the last INSERT, UPDATE, or DELETE query.  If no
             rows were affected, 0 is returned. If the number of affected rows cannot  be
             determined, -1 is returned. If an error occurred, <info>false</info> is returned.

<comment>See Also:</comment>
   * <strong>sqlsrv_num_rows()</strong>


id: sqlsrv_send_stream_data
type: function
doc:
<comment>Description:</comment>
  Sends data from parameter streams to the server
  
  Send data from parameter streams to the server. Up to 8 KB of data is sent  with each call.

<comment>Param:</comment>
  <info>resource</info>  <strong>$stmt</strong>  A statement resource returned by <strong>sqlsrv_query()</strong> or  <strong>sqlsrv_execute()</strong>.

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info> if there is more data to send and <info>false</info> if there is not.

<comment>See Also:</comment>
   * <strong>sqlsrv_prepare()</strong>
   * <strong>sqlsrv_query()</strong>


id: sqlsrv_server_info
type: function
doc:
<comment>Description:</comment>
  Returns information about the server
  
  Returns information about the server.

<comment>Param:</comment>
  <info>resource</info>  <strong>$conn</strong>  The connection resource that connects the client and the server.

<comment>Return:</comment>
  <info>array</info>  Returns an array as described in the following table: Returned ArrayCurrentDatabaseThe
         connected-to database.SQLServerVersionThe SQL Server version.SQLServerNameThe name of the
         server.

<comment>See Also:</comment>
   * <strong>sqlsrv_client_info()</strong>


id: sqrt
type: function
doc:
<comment>Description:</comment>
  平方根
  
  返回 <strong>$num</strong> 的平方根。

<comment>Param:</comment>
  <info>float</info>  <strong>$num</strong>  要处理的参数

<comment>Return:</comment>
  <info>float</info>  返回 <strong>$num</strong> 的平方根，负数时返回 <return>NAN</return>。

<comment>See Also:</comment>
   * <strong>pow()</strong>
   * <info>M_SQRTPI</info>——sqrt(pi)
   * <info>M_2_SQRTPI</info>——2/sqrt(pi)
   * <info>M_SQRT2</info>——sqrt(2)
   * <info>M_SQRT3</info>——sqrt(3)
   * <info>M_SQRT1_2</info>——1/sqrt(2)


id: srand
type: function
doc:
<comment>Description:</comment>
  播下随机数发生器种子
  
  使用 <strong>$seed</strong> 播下随机数发生器种子，或者<strong>$seed</strong> 是 <return>0</return> 时，使用随时值。
  
  不再需要用
  <strong>srand()</strong> 或 <strong>mt_srand()</strong>
  给随机数发生器播种，因为现在是由系统自动完成的。
  
  由于 Mt19937（“梅森旋转算法”）引擎仅接受 32 位整数作为种子，因此尽管 Mt19937 的范围为 219937-1，但
  可能的随机序列数量仅限于 232（即 4,294,967,296）。
  
  当依赖隐式或显式随机播种时，重复会出现得更早。根据生日问题，在少于 80,000 个随机生成的种子后，预计
  重复种子的概率为 50%。在随机生成大约 30,000 个种子后，重复种子的概率为 10%。
  
  This makes Mt19937 unsuitable for applications where duplicated sequences must not happen with
  more than a negligible probability. 如果需要可重复的种子，<class>Random\Engine\Xoshiro256StarStar</class> 和
  <class>Random\Engine\PcgOneseq128XslRr64</class> 引擎都支持更大的种子，它们不太可能随机碰撞。如果不需要再现性，
  <class>Random\Engine\Secure</class> 引擎提供加密安全随机性。
  
  自 PHP 7.1.0 起，<strong>srand()</strong> 成为 <strong>mt_srand()</strong> 的别名。

<comment>Param:</comment>
  <info>int</info>  <strong>$seed</strong>  任意 <info>int</info> 种子值。

<comment>Return:</comment>
  <info>void</info>  没有返回值。

<comment>See Also:</comment>
   * <strong>rand()</strong>
   * <strong>getrandmax()</strong>
   * <strong>mt_srand()</strong>


id: sscanf
type: function
doc:
<comment>Description:</comment>
  根据指定格式解析输入的字符
  
  <strong>sscanf()</strong> 函数输入类似 <strong>printf()</strong>。<strong>sscanf()</strong> 读取字符串 <strong>$string</strong>，然后根据指定格式 <strong>$format</strong> 解析。
  
  指定的格式字符串中的任意空白匹配输入字符串的任意空白。也就是说即使是格式字符串中的一个制表符（<return>\t</return>）
  也能匹配输入字符串中的单个空白字符。

<comment>Param:</comment>
  <info>string</info>  <strong>$string</strong>  将要被解析的 <info>string</info>。
  <info>string</info>  <strong>$format</strong>  <strong>$string</strong> 的格式解释，在 <strong>sprintf()</strong> 的文档中进行了描述，但有以下区别：  函数不支持区
                   域设置。  不支持 <return>F</return>、<return>g</return>、<return>G</return> 和 <return>b</return>。 <return>D</return> 代表十进制数字。 <return>i</return> stands for integer with base
                   detection. <return>n</return> 代表到目前为止处理的字符数。 <return>s</return> 在任何空白字符处停止阅读。 <return>*</return> 代替
                   <return>argnum$</return> 禁止分配此转换规范。
  <info>mixed</info>   <strong>$vars</strong>    可选参数将以引用方式传入，它们的值将被设置为解析值。

<comment>Return:</comment>
  <info>array|int|null</info>  如果仅传入了两个参数给这个函数，解析后的值作为数组返回。否则，如果传入可选参数，函
                  数将返回赋值数量。可选参数必须通过引用传递。
                  
                  如果 <strong>$format</strong> 要求的子字符串比 <strong>$string</strong> 内可用的子字符串多，则返回 <info>null</info>。

<comment>See Also:</comment>
   * <strong>printf()</strong>
   * <strong>sprintf()</strong>
   * <strong>fprintf()</strong>
   * <strong>vprintf()</strong>
   * <strong>vsprintf()</strong>
   * <strong>vfprintf()</strong>
   * <strong>fscanf()</strong>
   * <strong>number_format()</strong>
   * <strong>date()</strong>


id: ssdeep_fuzzy_compare
type: function
doc:
<comment>Description:</comment>
  Calculates the match score between two fuzzy hash signatures
  
  Calculates the match score between <strong>$signature1</strong> and <strong>$signature2</strong> using  context-triggered piecewise
  hashing, and returns the match score.

<comment>Param:</comment>
  <info>string</info>  <strong>$signature1</strong>  The first fuzzy hash signature string.
  <info>string</info>  <strong>$signature2</strong>  The second fuzzy hash signature string.

<comment>Return:</comment>
  <info>int</info>  Returns an integer from 0 to 100 on success, <info>false</info> otherwise.


id: ssdeep_fuzzy_hash
type: function
doc:
<comment>Description:</comment>
  Create a fuzzy hash from a string
  
  <strong>ssdeep_fuzzy_hash()</strong> calculates the hash of  <strong>$to_hash</strong> using  context-triggered piecewise hashing,
  and returns that hash.

<comment>Param:</comment>
  <info>string</info>  <strong>$to_hash</strong>  The input string.

<comment>Return:</comment>
  <info>string</info>  Returns a string on success, <info>false</info> otherwise.


id: ssdeep_fuzzy_hash_filename
type: function
doc:
<comment>Description:</comment>
  Create a fuzzy hash from a file
  
  <strong>ssdeep_fuzzy_hash_filename()</strong> calculates the hash  of the file specified by <strong>$file_name</strong> using
  context-triggered piecewise  hashing, and returns that hash.

<comment>Param:</comment>
  <info>string</info>  <strong>$file_name</strong>  The filename of the file to hash.

<comment>Return:</comment>
  <info>string</info>  Returns a string on success, <info>false</info> otherwise.


id: ssh2_auth_agent
type: function
doc:
<comment>Description:</comment>
  Authenticate over SSH using the ssh agent
  
  Authenticate over SSH using the ssh agent
  
  The <strong>ssh2_auth_agent()</strong> function will only be available  when the ssh2 extension is compiled with
  libssh &gt;= 1.2.3.

<comment>Param:</comment>
  <info>resource</info>  <strong>$session</strong>   An SSH connection link identifier, obtained from a call to <strong>ssh2_connect()</strong>.
  <info>string</info>    <strong>$username</strong>  Remote user name.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。


id: ssh2_auth_hostbased_file
type: function
doc:
<comment>Description:</comment>
  Authenticate using a public hostkey
  
  Authenticate using a public hostkey read from a file.

<comment>Param:</comment>
  <info>resource</info>  <strong>$session</strong>         An SSH connection link identifier, obtained from a call to
                             <strong>ssh2_connect()</strong>.
  <info>string</info>    <strong>$username</strong>        
  <info>string</info>    <strong>$hostname</strong>        
  <info>string</info>    <strong>$pubkeyfile</strong>      
  <info>string</info>    <strong>$privkeyfile</strong>     
  <info>string</info>    <strong>$passphrase</strong>      If <strong>$privkeyfile</strong> is encrypted (which it should be), the passphrase must
                             be provided.
  <info>string</info>    <strong>$local_username</strong>  If <strong>$local_username</strong> is omitted, then the value for <strong>$username</strong> will be
                             used for it.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。


id: ssh2_auth_none
type: function
doc:
<comment>Description:</comment>
  Authenticate as "none"
  
  Attempt "none" authentication which usually will (and should) fail. As part of the failure, this
  function will return an array of accepted authentication methods.

<comment>Param:</comment>
  <info>resource</info>  <strong>$session</strong>   An SSH connection link identifier, obtained from a call to <strong>ssh2_connect()</strong>.
  <info>string</info>    <strong>$username</strong>  Remote user name.

<comment>Return:</comment>
  <info>mixed</info>  Returns <info>true</info> if the server does accept "none" as an authentication method, or an array of
         accepted authentication methods on failure.


id: ssh2_auth_password
type: function
doc:
<comment>Description:</comment>
  Authenticate over SSH using a plain password
  
  Authenticate over SSH using a plain password. Since version 0.12 this function also supports
  keyboard_interactive method.

<comment>Param:</comment>
  <info>resource</info>  <strong>$session</strong>   An SSH connection link identifier, obtained from a call to <strong>ssh2_connect()</strong>.
  <info>string</info>    <strong>$username</strong>  Remote user name.
  <info>string</info>    <strong>$password</strong>  Password for <strong>$username</strong>

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。


id: ssh2_auth_pubkey_file
type: function
doc:
<comment>Description:</comment>
  Authenticate using a public key
  
  Authenticate using a public key read from a file.

<comment>Param:</comment>
  <info>resource</info>  <strong>$session</strong>      An SSH connection link identifier, obtained from a call to <strong>ssh2_connect()</strong>.
  <info>string</info>    <strong>$username</strong>     
  <info>string</info>    <strong>$pubkeyfile</strong>   The public key file needs to be in OpenSSH's format. It should look
                          something like:
                          
                          ssh-rsa AAAAB3NzaC1yc2EAAA....NX6sqSnHA8= rsa-key-20121110
  <info>string</info>    <strong>$privkeyfile</strong>  
  <info>string</info>    <strong>$passphrase</strong>   If <strong>$privkeyfile</strong> is encrypted (which it should be), the <strong>$passphrase</strong> must be
                          provided.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。


id: ssh2_connect
type: function
doc:
<comment>Description:</comment>
  Connect to an SSH server
  
  Establish a connection to a remote SSH server.
  
  Once connected, the client should verify the server's hostkey using <strong>ssh2_fingerprint()</strong>, then
  authenticate using either password or public key.

<comment>Param:</comment>
  <info>string</info>  <strong>$host</strong>       
  <info>int</info>     <strong>$port</strong>       
  <info>array</info>   <strong>$methods</strong>    <strong>$methods</strong> may be an associative array with up to four parameters as described
                      below.
                      
                      <strong>$methods</strong> may be an associative array with any or all of the following
                      parameters.IndexMeaningSupported Values*kex List of key exchange methods to
                      advertise, comma separated in order of preference. <return>diffie-hellman-group1-sha1</return>,
                      <return>diffie-hellman-group14-sha1</return>, and <return>diffie-hellman-group-exchange-sha1</return>hostkey
                      List of hostkey methods to advertise, comma separated in order of preference.
                      <return>ssh-rsa</return> and <return>ssh-dss</return> client_to_server Associative array containing crypt,
                      compression, and message authentication code (MAC) method preferences for
                      messages sent from client to server. server_to_client Associative array
                      containing crypt, compression, and message authentication code (MAC) method
                      preferences for messages sent from server to client.
                      
                      * - Supported Values are dependent on methods supported by underlying library.
                      See libssh2 documentation for additional information.
                      
                      <strong>$client_to_server</strong> and <strong>$server_to_client</strong> may be an associative array with any
                      or all of the following parameters. IndexMeaningSupported Values*cryptList of
                      crypto methods to advertise, comma separated in order of
                      preference.<return>rijndael-cbc@lysator.liu.se</return>, <return>aes256-cbc</return>, <return>aes192-cbc</return>, <return>aes128-cbc</return>,
                      <return>3des-cbc</return>, <return>blowfish-cbc</return>, <return>cast128-cbc</return>, <return>arcfour</return>, and <return>none**</return>compList of
                      compression methods to advertise, comma separated in order of preference.<return>zlib</return>
                      and <return>none</return> macList of MAC methods to advertise, comma separated in order of
                      preference.<return>hmac-sha1</return>, <return>hmac-sha1-96</return>, <return>hmac-ripemd160</return>,
                      <return>hmac-ripemd160@openssh.com</return>, and <return>none**</return>
                      
                      Crypt and MAC method "<return>none</return>" For security reasons, <return>none</return> is disabled by the
                      underlying libssh2 library unless explicitly enabled during build time by
                      using the appropriate ./configure options.  See documentation for the
                      underlying library for more information.
                      
                      For security reasons, <return>none</return> is disabled by the underlying libssh2 library
                      unless explicitly enabled during build time by using the appropriate
                      ./configure options.  See documentation for the underlying library for more
                      information.
  <info>array</info>   <strong>$callbacks</strong>  <strong>$callbacks</strong> may be an associative array with any or all of the following
                      parameters.  Callbacks parameters IndexMeaningPrototypeignore Name of function
                      to call when an <info>SSH2_MSG_IGNORE</info> packet is received void
                      ignore_cb($message)debug Name of function to call when an <info>SSH2_MSG_DEBUG</info>
                      packet is received void debug_cb($message, $language, $always_display)macerror
                      Name of function to call when a packet is received but the message
                      authentication code failed.  If the callback returns <info>true</info>, the mismatch will
                      be ignored, otherwise the connection will be terminated. bool
                      macerror_cb($packet)disconnect Name of function to call when an
                      <info>SSH2_MSG_DISCONNECT</info> packet is received void disconnect_cb($reason, $message,
                      $language)

<comment>Return:</comment>
  <info>resource|false</info>  Returns a resource on success, or <info>false</info> on error.

<comment>See Also:</comment>
   * <strong>ssh2_fingerprint()</strong>
   * <strong>ssh2_auth_none()</strong>
   * <strong>ssh2_auth_password()</strong>
   * <strong>ssh2_auth_pubkey_file()</strong>
   * <strong>ssh2_disconnect()</strong>


id: ssh2_disconnect
type: function
doc:
<comment>Description:</comment>
  Close a connection to a remote SSH server
  
  Close a connection to a remote SSH server.

<comment>Param:</comment>
  <info>resource</info>  <strong>$session</strong>  An SSH connection link identifier, obtained from a call to <strong>ssh2_connect()</strong>.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>ssh2_connect()</strong>


id: ssh2_exec
type: function
doc:
<comment>Description:</comment>
  Execute a command on a remote server
  
  Execute a command at the remote end and allocate a channel for it.

<comment>Param:</comment>
  <info>resource</info>  <strong>$session</strong>            An SSH connection link identifier, obtained from a call to
                                <strong>ssh2_connect()</strong>.
  <info>string</info>    <strong>$command</strong>            
  <info>string</info>    <strong>$pty</strong>                
  <info>array</info>     <strong>$env</strong>                <strong>$env</strong> may be passed as an associative array of name/value pairs to
                                set in the target environment.
  <info>int</info>       <strong>$width</strong>              Width of the virtual terminal.
  <info>int</info>       <strong>$height</strong>             Height of the virtual terminal.
  <info>int</info>       <strong>$width_height_type</strong>  <strong>$width_height_type</strong> should be one of <info>SSH2_TERM_UNIT_CHARS</info> or
                                <info>SSH2_TERM_UNIT_PIXELS</info>.

<comment>Return:</comment>
  <info>resource|false</info>  Returns a stream on success 或者在失败时返回 <info>false</info>.

<comment>See Also:</comment>
   * <strong>ssh2_connect()</strong>
   * <strong>ssh2_shell()</strong>
   * <strong>ssh2_tunnel()</strong>


id: ssh2_fetch_stream
type: function
doc:
<comment>Description:</comment>
  Fetch an extended data stream
  
  Fetches an alternate substream associated with an SSH2 channel stream. The SSH2 protocol currently
  defines only one substream, STDERR, which has a substream ID of <info>SSH2_STREAM_STDERR</info> (defined as 1).

<comment>Param:</comment>
  <info>resource</info>  <strong>$channel</strong>   
  <info>int</info>       <strong>$streamid</strong>  An SSH2 channel stream.

<comment>Return:</comment>
  <info>resource</info>  Returns the requested stream resource.

<comment>See Also:</comment>
   * <strong>ssh2_shell()</strong>
   * <strong>ssh2_exec()</strong>
   * <strong>ssh2_connect()</strong>


id: ssh2_fingerprint
type: function
doc:
<comment>Description:</comment>
  Retrieve fingerprint of remote server
  
  Returns a server hostkey hash from an active session.

<comment>Param:</comment>
  <info>resource</info>  <strong>$session</strong>  An SSH connection link identifier, obtained from a call to <strong>ssh2_connect()</strong>.
  <info>int</info>       <strong>$flags</strong>    <strong>$flags</strong> may be either of <info>SSH2_FINGERPRINT_MD5</info> or <info>SSH2_FINGERPRINT_SHA1</info>
                      logically ORed with <info>SSH2_FINGERPRINT_HEX</info> or <info>SSH2_FINGERPRINT_RAW</info>.

<comment>Return:</comment>
  <info>string</info>  Returns the hostkey hash as a string.


id: ssh2_forward_accept
type: function
doc:
<comment>Description:</comment>
  Accept a connection created by a listener
  
  Accepts a connection created by a listener.
  
  本函数还未编写文档，仅有参数列表。

<comment>Param:</comment>
  <info></info>  <strong>$desc</strong>  An SSH2 Listener resource, obtained from a call to <strong>ssh2_forward_listen()</strong>.

<comment>Return:</comment>
  <info>resource|false</info>  Returns a stream resource,  或者在失败时返回 <info>false</info>.


id: ssh2_forward_listen
type: function
doc:
<comment>Description:</comment>
  Bind a port on the remote server and listen for connections
  
  Binds a port on the remote server and listen for connections.
  
  本函数还未编写文档，仅有参数列表。

<comment>Param:</comment>
  <info>resource</info>  <strong>$session</strong>          An SSH Session resource, obtained from a call to <strong>ssh2_connect()</strong>.
  <info>int</info>       <strong>$port</strong>             The port of the remote server.
  <info>string</info>    <strong>$host</strong>             
  <info>int</info>       <strong>$max_connections</strong>  

<comment>Return:</comment>
  <info>resource|false</info>  Returns an SSH2 Listener,  或者在失败时返回 <info>false</info>.

<comment>See Also:</comment>
   * <strong>ssh2_forward_accept()</strong>


id: ssh2_methods_negotiated
type: function
doc:
<comment>Description:</comment>
  Return list of negotiated methods
  
  Returns list of negotiated methods.

<comment>Param:</comment>
  <info>resource</info>  <strong>$session</strong>  An SSH connection link identifier, obtained from a call to <strong>ssh2_connect()</strong>.

<comment>Return:</comment>
  <info>array</info>  

<comment>See Also:</comment>
   * <strong>ssh2_connect()</strong>


id: ssh2_poll
type: function
doc:
<comment>Description:</comment>
  Poll the channels/listeners/streams for events
  
  Polls the channels/listeners/streams for events, and returns the number of descriptors which
  returned non-zero revents.
  
  本函数还未编写文档，仅有参数列表。

<comment>Param:</comment>
  <info>array</info>  <strong>$desc</strong>     An indexed array of subarrays with the keys <return>'resource'</return> and <return>'events'</return>. The value of
                   the resource is a (channel) stream or an SSH2 Listener resource. The value of the
                   event are SSH2_POLL* flags bitwise ORed together. Each subarray will be populated
                   with an <return>'revents'</return> element on return, whose values are SSH2_POLL* flags bitwise
                   ORed together of the events that occurred.
  <info>int</info>    <strong>$timeout</strong>  The timeout in seconds.

<comment>Return:</comment>
  <info>int</info>  Returns the number of descriptors which returned non-zero revents.


id: ssh2_publickey_add
type: function
doc:
<comment>Description:</comment>
  Add an authorized publickey
    
  
  公钥子系统用于管理服务器到已被认证的客户端的公钥。要用公钥认证方法来认证远程系统，应使用
  <strong>ssh2_auth_pubkey_file()</strong> 函数。

<comment>Param:</comment>
  <info>resource</info>  <strong>$pkey</strong>        Publickey Subsystem resource created by <strong>ssh2_publickey_init()</strong>.
  <info>string</info>    <strong>$algoname</strong>    Publickey algorithm (e.g.): ssh-dss, ssh-rsa
  <info>string</info>    <strong>$blob</strong>        Publickey blob as raw binary data
  <info>bool</info>      <strong>$overwrite</strong>   If the specified key already exists, should it be overwritten?
  <info>array</info>     <strong>$attributes</strong>  Associative array of attributes to assign to this public key. Refer to
                         ietf-secsh-publickey-subsystem for a list of supported attributes. To mark
                         an attribute as mandatory, precede its name with an asterisk. If the server
                         is unable to support an attribute marked mandatory, it will abort the add
                         process.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>ssh2_publickey_init()</strong>
   * <strong>ssh2_publickey_remove()</strong>
   * <strong>ssh2_publickey_list()</strong>


id: ssh2_publickey_init
type: function
doc:
<comment>Description:</comment>
  Initialize Publickey subsystem
    
  
  Request the Publickey subsystem from an already connected SSH2 server.
  
  The publickey subsystem allows an already connected and authenticated client to manage the list of
  authorized public keys stored on the target server in an implementation agnostic manner. If the
  remote server does not support the publickey subsystem, the <strong>ssh2_publickey_init()</strong> function will
  return <info>false</info>.

<comment>Param:</comment>
  <info>resource</info>  <strong>$session</strong>  

<comment>Return:</comment>
  <info>resource|false</info>  Returns an <return>SSH2 Publickey Subsystem</return> resource for use with all other
                  ssh2_publickey_*() methods 或者在失败时返回 <info>false</info>.

<comment>See Also:</comment>
   * <strong>ssh2_publickey_add()</strong>
   * <strong>ssh2_publickey_remove()</strong>
   * <strong>ssh2_publickey_list()</strong>


id: ssh2_publickey_list
type: function
doc:
<comment>Description:</comment>
  List currently authorized publickeys
    
  
  List currently authorized publickeys.

<comment>Param:</comment>
  <info>resource</info>  <strong>$pkey</strong>  Publickey Subsystem resource

<comment>Return:</comment>
  <info>array</info>  Returns a numerically indexed array of keys, each of which is an associative array
         containing: name, blob, and attrs elements.
         
         Publickey elementsArray KeyMeaningnameName of algorithm used by this publickey, for
         example: <return>ssh-dss</return> or <return>ssh-rsa</return>.blobPublickey blob as raw binary data.attrsAttributes assigned
         to this publickey. The most common attribute, and the only one supported by publickey
         version 1 servers, is <return>comment</return>, which may be any freeform string.

<comment>See Also:</comment>
   * <strong>ssh2_publickey_init()</strong>
   * <strong>ssh2_publickey_add()</strong>
   * <strong>ssh2_publickey_remove()</strong>


id: ssh2_publickey_remove
type: function
doc:
<comment>Description:</comment>
  Remove an authorized publickey
    
  
  Removes an authorized publickey.

<comment>Param:</comment>
  <info>resource</info>  <strong>$pkey</strong>      Publickey Subsystem Resource
  <info>string</info>    <strong>$algoname</strong>  Publickey algorithm (e.g.): ssh-dss, ssh-rsa
  <info>string</info>    <strong>$blob</strong>      Publickey blob as raw binary data

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>ssh2_publickey_init()</strong>
   * <strong>ssh2_publickey_add()</strong>
   * <strong>ssh2_publickey_list()</strong>


id: ssh2_scp_recv
type: function
doc:
<comment>Description:</comment>
  Request a file via SCP
  
  Copy a file from the remote server to the local filesystem using the SCP protocol.

<comment>Param:</comment>
  <info>resource</info>  <strong>$session</strong>      An SSH connection link identifier, obtained from a call to <strong>ssh2_connect()</strong>.
  <info>string</info>    <strong>$remote_file</strong>  Path to the remote file.
  <info>string</info>    <strong>$local_file</strong>   Path to the local file.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>ssh2_scp_send()</strong>
   * <strong>copy()</strong>


id: ssh2_scp_send
type: function
doc:
<comment>Description:</comment>
  Send a file via SCP
  
  Copy a file from the local filesystem to the remote server using the SCP protocol.

<comment>Param:</comment>
  <info>resource</info>  <strong>$session</strong>      An SSH connection link identifier, obtained from a call to <strong>ssh2_connect()</strong>.
  <info>string</info>    <strong>$local_file</strong>   Path to the local file.
  <info>string</info>    <strong>$remote_file</strong>  Path to the remote file.
  <info>int</info>       <strong>$create_mode</strong>  The file will be created with the mode specified by <strong>$create_mode</strong>.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>ssh2_scp_recv()</strong>
   * <strong>copy()</strong>


id: ssh2_send_eof
type: function
doc:
<comment>Description:</comment>
  Send EOF to stream
  
  Sends an EOF to the stream; this is typically used to close standard input, while keeping output
  and error alive. For example, one can send a remote process some data over standard input, close
  it to start processing, and still be able to read out the results without creating additional
  files.

<comment>Param:</comment>
  <info>resource</info>  <strong>$channel</strong>  An SSH stream; can be acquired through functions like <strong>ssh2_fetch_stream()</strong> or
                      <strong>ssh2_connect()</strong>.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>ssh2_fetch_stream()</strong>


id: ssh2_sftp
type: function
doc:
<comment>Description:</comment>
  Initialize SFTP subsystem
  
  Request the SFTP subsystem from an already connected SSH2 server.

<comment>Param:</comment>
  <info>resource</info>  <strong>$session</strong>  An SSH connection link identifier, obtained from a call to <strong>ssh2_connect()</strong>.

<comment>Return:</comment>
  <info>resource|false</info>  This method returns an <return>SSH2 SFTP</return> resource for use with all other ssh2_sftp_*()
                  methods and the ssh2.sftp:// fopen wrapper, 或者在失败时返回 <info>false</info>.

<comment>See Also:</comment>
   * <strong>ssh2_scp_recv()</strong>
   * <strong>ssh2_scp_send()</strong>


id: ssh2_sftp_chmod
type: function
doc:
<comment>Description:</comment>
  Changes file mode
  
  Attempts to change the mode of the specified file to that given in <strong>$mode</strong>.

<comment>Param:</comment>
  <info>resource</info>  <strong>$sftp</strong>      An SSH2 SFTP resource opened by <strong>ssh2_sftp()</strong>.
  <info>string</info>    <strong>$filename</strong>  Path to the file.
  <info>int</info>       <strong>$mode</strong>      Permissions on the file. See the <strong>chmod()</strong> for more details on this parameter.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>chmod()</strong>
   * <strong>ssh2_sftp()</strong>
   * <strong>ssh2_connect()</strong>


id: ssh2_sftp_lstat
type: function
doc:
<comment>Description:</comment>
  Stat a symbolic link
  
  Stats a symbolic link on the remote filesystem without following the link.
  
  This function is similar to using the <strong>lstat()</strong> function with the ssh2.sftp:// wrapper and returns
  the same values.

<comment>Param:</comment>
  <info>resource</info>  <strong>$sftp</strong>  An SSH2 SFTP resource opened by <strong>ssh2_sftp()</strong>.
  <info>string</info>    <strong>$path</strong>  Path to the remote symbolic link.

<comment>Return:</comment>
  <info>array</info>  See the documentation for <strong>stat()</strong> for details on the values which may be returned.

<comment>See Also:</comment>
   * <strong>ssh2_sftp_stat()</strong>
   * <strong>lstat()</strong>
   * <strong>stat()</strong>


id: ssh2_sftp_mkdir
type: function
doc:
<comment>Description:</comment>
  Create a directory
  
  Creates a directory on the remote file server with permissions set to <strong>$mode</strong>.
  
  This function is similar to using <strong>mkdir()</strong> with the ssh2.sftp:// wrapper.

<comment>Param:</comment>
  <info>resource</info>  <strong>$sftp</strong>       An SSH2 SFTP resource opened by <strong>ssh2_sftp()</strong>.
  <info>string</info>    <strong>$dirname</strong>    Path of the new directory.
  <info>int</info>       <strong>$mode</strong>       Permissions on the new directory. The actual mode is affected by the current
                        umask.
  <info>bool</info>      <strong>$recursive</strong>  If <strong>$recursive</strong> is <info>true</info> any parent directories required for <strong>$dirname</strong> will be
                        automatically created as well.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>mkdir()</strong>
   * <strong>ssh2_sftp_rmdir()</strong>


id: ssh2_sftp_readlink
type: function
doc:
<comment>Description:</comment>
  Return the target of a symbolic link
  
  Returns the target of a symbolic link.

<comment>Param:</comment>
  <info>resource</info>  <strong>$sftp</strong>  An SSH2 SFTP resource opened by <strong>ssh2_sftp()</strong>.
  <info>string</info>    <strong>$link</strong>  Path of the symbolic link.

<comment>Return:</comment>
  <info>string</info>  Returns the target of the symbolic <strong>$link</strong>.

<comment>See Also:</comment>
   * <strong>readlink()</strong>
   * <strong>ssh2_sftp_symlink()</strong>


id: ssh2_sftp_realpath
type: function
doc:
<comment>Description:</comment>
  Resolve the realpath of a provided path string
  
  Translates <strong>$filename</strong> into the effective real path on the remote filesystem.

<comment>Param:</comment>
  <info>resource</info>  <strong>$sftp</strong>      An SSH2 SFTP resource opened by <strong>ssh2_sftp()</strong>.
  <info>string</info>    <strong>$filename</strong>  

<comment>Return:</comment>
  <info>string</info>  Returns the real path as a string.

<comment>See Also:</comment>
   * <strong>realpath()</strong>
   * <strong>ssh2_sftp_symlink()</strong>
   * <strong>ssh2_sftp_readlink()</strong>


id: ssh2_sftp_rename
type: function
doc:
<comment>Description:</comment>
  Rename a remote file
  
  Renames a file on the remote filesystem.

<comment>Param:</comment>
  <info>resource</info>  <strong>$sftp</strong>  An SSH2 SFTP resource opened by <strong>ssh2_sftp()</strong>.
  <info>string</info>    <strong>$from</strong>  The current file that is being renamed.
  <info>string</info>    <strong>$to</strong>    The new file name that replaces <strong>$from</strong>.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>rename()</strong>


id: ssh2_sftp_rmdir
type: function
doc:
<comment>Description:</comment>
  Remove a directory
  
  Removes a directory from the remote file server.
  
  This function is similar to using <strong>rmdir()</strong> with the ssh2.sftp:// wrapper.

<comment>Param:</comment>
  <info>resource</info>  <strong>$sftp</strong>     An SSH2 SFTP resource opened by <strong>ssh2_sftp()</strong>.
  <info>string</info>    <strong>$dirname</strong>  

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>rmdir()</strong>
   * <strong>ssh2_sftp_mkdir()</strong>


id: ssh2_sftp_stat
type: function
doc:
<comment>Description:</comment>
  Stat a file on a remote filesystem
  
  Stats a file on the remote filesystem following any symbolic links.
  
  This function is similar to using the <strong>stat()</strong> function with the ssh2.sftp:// wrapper and returns
  the same values.

<comment>Param:</comment>
  <info>resource</info>  <strong>$sftp</strong>  An SSH2 SFTP resource opened by <strong>ssh2_sftp()</strong>.
  <info>string</info>    <strong>$path</strong>  

<comment>Return:</comment>
  <info>array</info>  See the documentation for <strong>stat()</strong> for details on the values which may be returned.

<comment>See Also:</comment>
   * <strong>ssh2_sftp_lstat()</strong>
   * <strong>lstat()</strong>
   * <strong>stat()</strong>


id: ssh2_sftp_symlink
type: function
doc:
<comment>Description:</comment>
  Create a symlink
  
  Creates a symbolic link named <strong>$link</strong> on the remote filesystem pointing to <strong>$target</strong>.

<comment>Param:</comment>
  <info>resource</info>  <strong>$sftp</strong>    An SSH2 SFTP resource opened by <strong>ssh2_sftp()</strong>.
  <info>string</info>    <strong>$target</strong>  Target of the symbolic link.
  <info>string</info>    <strong>$link</strong>    

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>ssh2_sftp_readlink()</strong>
   * <strong>symlink()</strong>


id: ssh2_sftp_unlink
type: function
doc:
<comment>Description:</comment>
  Delete a file
  
  Deletes a file on the remote filesystem.

<comment>Param:</comment>
  <info>resource</info>  <strong>$sftp</strong>      An SSH2 SFTP resource opened by <strong>ssh2_sftp()</strong>.
  <info>string</info>    <strong>$filename</strong>  

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>unlink()</strong>


id: ssh2_shell
type: function
doc:
<comment>Description:</comment>
  Request an interactive shell
  
  Open a shell at the remote end and allocate a stream for it.

<comment>Param:</comment>
  <info>resource</info>    <strong>$session</strong>            An SSH connection link identifier, obtained from a call to
                                  <strong>ssh2_connect()</strong>.
  <info>string</info>      <strong>$termtype</strong>           <strong>$termtype</strong> should correspond to one of the entries in the target
                                  system's <return>/etc/termcap</return> file.
  <info>array|null</info>  <strong>$env</strong>                <strong>$env</strong> may be passed as an associative array of name/value pairs to
                                  set in the target environment.
  <info>int</info>         <strong>$width</strong>              Width of the virtual terminal.
  <info>int</info>         <strong>$height</strong>             Height of the virtual terminal.
  <info>int</info>         <strong>$width_height_type</strong>  <strong>$width_height_type</strong> should be one of <info>SSH2_TERM_UNIT_CHARS</info> or
                                  <info>SSH2_TERM_UNIT_PIXELS</info>.

<comment>Return:</comment>
  <info>resource|false</info>  Returns a stream resource on success,  或者在失败时返回 <info>false</info>.

<comment>See Also:</comment>
   * <strong>ssh2_exec()</strong>
   * <strong>ssh2_tunnel()</strong>
   * <strong>ssh2_fetch_stream()</strong>


id: ssh2_tunnel
type: function
doc:
<comment>Description:</comment>
  Open a tunnel through a remote server
  
  Open a socket stream to an arbitrary host/port by way of the currently connected SSH server.

<comment>Param:</comment>
  <info>resource</info>  <strong>$session</strong>  An SSH connection link identifier, obtained from a call to <strong>ssh2_connect()</strong>.
  <info>string</info>    <strong>$host</strong>     
  <info>int</info>       <strong>$port</strong>     

<comment>Return:</comment>
  <info>resource</info>  

<comment>See Also:</comment>
   * <strong>ssh2_connect()</strong>
   * <strong>fsockopen()</strong>


id: stat
type: function
doc:
<comment>Description:</comment>
  给出文件的信息
  
  获取由 <strong>$filename</strong> 指定的文件的统计信息。如果 <strong>$filename</strong> 是符号连接，则统计信息是关于被连接文件本身
  的，而不是符号连接。在 PHP 7.4.0 之前，使用 Windows NTS 版本获取 <return>size</return>、<return>atime</return>、<return>mtime</return> 和 <return>ctime</return> 统计
  信息将从符号链接获取。
  
  <strong>lstat()</strong> 和 <strong>stat()</strong> 相同，只除了它会返回符号连接的状态。

<comment>Param:</comment>
  <info>string</info>  <strong>$filename</strong>  文件的路径。

<comment>Return:</comment>
  <info>array|false</info>  <strong>stat()</strong> 和 <strong>fstat()</strong> 返回格式数字下标关联键名说明0dev设备号 ***1inoinode 号
               ****2modeinode 保护模式 *****3nlink连接数目4uid所有者的用户 id *5gid所有者的组 id
               *6rdev设备类型，如果是 inode 设备的话7size文件大小的字节数8atime上次访问时间（Unix 时
               间戳）9mtime上次修改时间（Unix 时间戳）10ctime上次 inodb 改变时间（Unix 时间戳）
               11blksize文件系统 IO 的块大小 **12blocks分配的 512 字节块数 **
               
               * Windows 下总是 <return>0</return>。
               
               * - 仅在支持 st_blksize 类型的系统下有效。其它系统（如 Windows）返回 <return>-1</return>。
               
               *** On Windows, as of PHP 7.4.0, this is the serial number of the volume that
               contains the file, which is a 64-bit unsigned integer, so may overflow. Previously,
               it was the numeric representation of the drive letter (e.g. <return>2</return> for <return>C:</return>) for <strong>stat()</strong>, and
               <return>0</return> for <strong>lstat()</strong>.
               
               **** 在 Windows 上，自 PHP 7.4.0 起，这是跟文件相关的标识符，因为是64位 unsigned 整
               数，因此可能会溢出。之前始终为 <return>0</return>。
               
               ***** On Windows, the writable permission bit is set according to the read-only file
               attribute, and the same value is reported for all users, group and owner. The ACL is
               not taken into account, contrary to <strong>is_writable()</strong>.
               
               <return>mode</return> 的值包含几个函数读取到的信息。当用八进制编写时，从右开始，前三位由 <strong>chmod()</strong> 返
               回。PHP 忽略下一个数字。接下来的两位数字表示文件类型： <return>mode</return> 文件类型八进制表示 <return>mode</return>含
               义<info>0140000</info>socket<info>0120000</info>link<info>0100000</info>常规文件<info>0060000</info>块设备<info>0040000</info>目录<info>0020000</info>字符设备
               <info>0010000</info>fifo 例如普通文件可能是 <info>0100644</info>，目录可能是 <info>0040755</info>。
               
               如果出错，<strong>stat()</strong> 返回 <info>false</info>。
               
               因为 PHP 的整数类型是有符号整型而且很多平台使用 32 位整型，对 2GB
               以上的文件，一些文件系统函数可能返回无法预期的结果。

<comment>See Also:</comment>
   * <strong>lstat()</strong>
   * <strong>fstat()</strong>
   * <strong>filemtime()</strong>
   * <strong>filegroup()</strong>
   * <class>SplFileInfo</class>


id: stats_absolute_deviation
type: function
doc:
<comment>Description:</comment>
  Returns the absolute deviation of an array of values
  
  Returns the absolute deviation of the values in <strong>$a</strong>.

<comment>Param:</comment>
  <info>array</info>  <strong>$a</strong>  The input array

<comment>Return:</comment>
  <info>float</info>  Returns the absolute deviation of the values in <strong>$a</strong>, or <info>false</info> if <strong>$a</strong> is empty or is not an
         array.


id: stats_cdf_beta
type: function
doc:
<comment>Description:</comment>
  Calculates any one parameter of the beta distribution given values for the others
  
  Returns the cumulative distribution function, its inverse, or one of its parameters, of the beta
  distribution. The kind of the return value and parameters (<strong>$par1</strong>, <strong>$par2</strong>, and <strong>$par3</strong>) are determined
  by <strong>$which</strong>.
  
  The following table lists the return value and parameters by <strong>$which</strong>. CDF, x, alpha, and beta
  denotes cumulative distribution function, the value of the random variable, and shape parameters
  of the beta distribution, respectively. Return value and parameters<strong>$which</strong>Return
  value<strong>$par1</strong><strong>$par2</strong><strong>$par3</strong>1CDFxalphabeta2xCDFalphabeta3alphaxCDFbeta4betaxCDFalpha

<comment>Param:</comment>
  <info>float</info>  <strong>$par1</strong>   The first parameter
  <info>float</info>  <strong>$par2</strong>   The second parameter
  <info>float</info>  <strong>$par3</strong>   The third parameter
  <info>int</info>    <strong>$which</strong>  The flag to determine what to be calculated

<comment>Return:</comment>
  <info>float</info>  Returns CDF, x, alpha, or beta, determined by <strong>$which</strong>.


id: stats_cdf_binomial
type: function
doc:
<comment>Description:</comment>
  Calculates any one parameter of the binomial distribution given values for the others
  
  Returns the cumulative distribution function, its inverse, or one of its parameters, of the
  binomial distribution. The kind of the return value and parameters (<strong>$par1</strong>, <strong>$par2</strong>, and <strong>$par3</strong>) are
  determined by <strong>$which</strong>.
  
  The following table lists the return value and parameters by <strong>$which</strong>. CDF, x, n, and p denotes
  cumulative distribution function, the number of successes, the number of trials, and the success
  rate for each trial, respectively. Return value and parameters<strong>$which</strong>Return
  value<strong>$par1</strong><strong>$par2</strong><strong>$par3</strong>1CDFxnp2xCDFnp3nxCDFp4pxCDFn

<comment>Param:</comment>
  <info>float</info>  <strong>$par1</strong>   The first parameter
  <info>float</info>  <strong>$par2</strong>   The second parameter
  <info>float</info>  <strong>$par3</strong>   The third parameter
  <info>int</info>    <strong>$which</strong>  The flag to determine what to be calculated

<comment>Return:</comment>
  <info>float</info>  Returns CDF, x, n, or p, determined by <strong>$which</strong>.


id: stats_cdf_cauchy
type: function
doc:
<comment>Description:</comment>
  Calculates any one parameter of the Cauchy distribution given values for the others
  
  Returns the cumulative distribution function, its inverse, or one of its parameters, of the Cauchy
  distribution. The kind of the return value and parameters (<strong>$par1</strong>, <strong>$par2</strong>, and <strong>$par3</strong>) are determined
  by <strong>$which</strong>.
  
  The following table lists the return value and parameters by <strong>$which</strong>. CDF, x, x0, and gamma denotes
  cumulative distribution function, the value of the random variable, the location and the scale
  parameter of the Cauchy distribution, respectively. Return value and parameters<strong>$which</strong>Return
  value<strong>$par1</strong><strong>$par2</strong><strong>$par3</strong>1CDFxx0gamma2xCDFx0gamma3x0xCDFgamma4gammaxCDFx0

<comment>Param:</comment>
  <info>float</info>  <strong>$par1</strong>   The first parameter
  <info>float</info>  <strong>$par2</strong>   The second parameter
  <info>float</info>  <strong>$par3</strong>   The third parameter
  <info>int</info>    <strong>$which</strong>  The flag to determine what to be calculated

<comment>Return:</comment>
  <info>float</info>  Returns CDF, x, x0, or gamma, determined by <strong>$which</strong>.


id: stats_cdf_chisquare
type: function
doc:
<comment>Description:</comment>
  Calculates any one parameter of the chi-square distribution given values for the others
  
  Returns the cumulative distribution function, its inverse, or one of its parameters, of the
  chi-square distribution. The kind of the return value and parameters (<strong>$par1</strong> and <strong>$par2</strong>) are
  determined by <strong>$which</strong>.
  
  The following table lists the return value and parameters by <strong>$which</strong>. CDF, x, and k denotes
  cumulative distribution function, the value of the random variable, and the degree of freedom of
  the chi-square distribution, respectively. Return value and parameters<strong>$which</strong>Return
  value<strong>$par1</strong><strong>$par2</strong>1CDFxk2xCDFk3kxCDF

<comment>Param:</comment>
  <info>float</info>  <strong>$par1</strong>   The first parameter
  <info>float</info>  <strong>$par2</strong>   The second parameter
  <info>int</info>    <strong>$which</strong>  The flag to determine what to be calculated

<comment>Return:</comment>
  <info>float</info>  Returns CDF, x, or k, determined by <strong>$which</strong>.


id: stats_cdf_exponential
type: function
doc:
<comment>Description:</comment>
  Calculates any one parameter of the exponential distribution given values for the others
  
  Returns the cumulative distribution function, its inverse, or one of its parameters, of the
  exponential distribution. The kind of the return value and parameters (<strong>$par1</strong> and <strong>$par2</strong>) are
  determined by <strong>$which</strong>.
  
  The following table lists the return value and parameters by <strong>$which</strong>. CDF, x, and lambda denotes
  cumulative distribution function, the value of the random variable, and the rate parameter of the
  exponential distribution, respectively. Return value and parameters<strong>$which</strong>Return
  value<strong>$par1</strong><strong>$par2</strong>1CDFxlambda2xCDFlambda3lambdaxCDF

<comment>Param:</comment>
  <info>float</info>  <strong>$par1</strong>   The first parameter
  <info>float</info>  <strong>$par2</strong>   The second parameter
  <info>int</info>    <strong>$which</strong>  The flag to determine what to be calculated

<comment>Return:</comment>
  <info>float</info>  Returns CDF, x, or lambda, determined by <strong>$which</strong>.


id: stats_cdf_f
type: function
doc:
<comment>Description:</comment>
  Calculates any one parameter of the F distribution given values for the others
  
  Returns the cumulative distribution function, its inverse, or one of its parameters, of the F
  distribution. The kind of the return value and parameters (<strong>$par1</strong>, <strong>$par2</strong>, and <strong>$par3</strong>) are determined
  by <strong>$which</strong>.
  
  The following table lists the return value and parameters by <strong>$which</strong>. CDF, x, d1, and d2 denotes
  cumulative distribution function, the value of the random variable, and the degree of freedoms of
  the F distribution, respectively. Return value and parameters<strong>$which</strong>Return
  value<strong>$par1</strong><strong>$par2</strong><strong>$par3</strong>1CDFxd1d22xCDFd1d23d1xCDFd24d2xCDFd1

<comment>Param:</comment>
  <info>float</info>  <strong>$par1</strong>   The first parameter
  <info>float</info>  <strong>$par2</strong>   The second parameter
  <info>float</info>  <strong>$par3</strong>   The third parameter
  <info>int</info>    <strong>$which</strong>  The flag to determine what to be calculated

<comment>Return:</comment>
  <info>float</info>  Returns CDF, x, d1, or d2, determined by <strong>$which</strong>.


id: stats_cdf_gamma
type: function
doc:
<comment>Description:</comment>
  Calculates any one parameter of the gamma distribution given values for the others
  
  Returns the cumulative distribution function, its inverse, or one of its parameters, of the gamma
  distribution. The kind of the return value and parameters (<strong>$par1</strong>, <strong>$par2</strong>, and <strong>$par3</strong>) are determined
  by <strong>$which</strong>.
  
  The following table lists the return value and parameters by <strong>$which</strong>. CDF, x, k, and theta denotes
  cumulative distribution function, the value of the random variable, and the shape and the scale
  parameter of the gamma distribution, respectively. Return value and parameters<strong>$which</strong>Return
  value<strong>$par1</strong><strong>$par2</strong><strong>$par3</strong>1CDFxktheta2xCDFktheta3kxCDFtheta4thetaxCDFk

<comment>Param:</comment>
  <info>float</info>  <strong>$par1</strong>   The first parameter
  <info>float</info>  <strong>$par2</strong>   The second parameter
  <info>float</info>  <strong>$par3</strong>   The third parameter
  <info>int</info>    <strong>$which</strong>  The flag to determine what to be calculated

<comment>Return:</comment>
  <info>float</info>  Returns CDF, x, k, or theta, determined by <strong>$which</strong>.


id: stats_cdf_laplace
type: function
doc:
<comment>Description:</comment>
  Calculates any one parameter of the Laplace distribution given values for the others
  
  Returns the cumulative distribution function, its inverse, or one of its parameters, of the
  Laplace distribution. The kind of the return value and parameters (<strong>$par1</strong>, <strong>$par2</strong>, and <strong>$par3</strong>) are
  determined by <strong>$which</strong>.
  
  The following table lists the return value and parameters by <strong>$which</strong>. CDF, x, mu, and b denotes
  cumulative distribution function, the value of the random variable, and the location and the scale
  parameter of the Laplace distribution, respectively. Return value and parameters<strong>$which</strong>Return
  value<strong>$par1</strong><strong>$par2</strong><strong>$par3</strong>1CDFxmub2xCDFmub3muxCDFb4bxCDFmu

<comment>Param:</comment>
  <info>float</info>  <strong>$par1</strong>   The first parameter
  <info>float</info>  <strong>$par2</strong>   The second parameter
  <info>float</info>  <strong>$par3</strong>   The third parameter
  <info>int</info>    <strong>$which</strong>  The flag to determine what to be calculated

<comment>Return:</comment>
  <info>float</info>  Returns CDF, x, mu, or b, determined by <strong>$which</strong>.


id: stats_cdf_logistic
type: function
doc:
<comment>Description:</comment>
  Calculates any one parameter of the logistic distribution given values for the others
  
  Returns the cumulative distribution function, its inverse, or one of its parameters, of the
  logistic distribution. The kind of the return value and parameters (<strong>$par1</strong>, <strong>$par2</strong>, and <strong>$par3</strong>) are
  determined by <strong>$which</strong>.
  
  The following table lists the return value and parameters by <strong>$which</strong>. CDF, x, mu, and s denotes
  cumulative distribution function, the value of the random variable, and the location and the scale
  parameter of the logistic distribution, respectively. Return value and parameters<strong>$which</strong>Return
  value<strong>$par1</strong><strong>$par2</strong><strong>$par3</strong>1CDFxmus2xCDFmus3muxCDFs4sxCDFmu

<comment>Param:</comment>
  <info>float</info>  <strong>$par1</strong>   The first parameter
  <info>float</info>  <strong>$par2</strong>   The second parameter
  <info>float</info>  <strong>$par3</strong>   The third parameter
  <info>int</info>    <strong>$which</strong>  The flag to determine what to be calculated

<comment>Return:</comment>
  <info>float</info>  Returns CDF, x, mu, or s, determined by <strong>$which</strong>.


id: stats_cdf_negative_binomial
type: function
doc:
<comment>Description:</comment>
  Calculates any one parameter of the negative binomial distribution given values for the others
  
  Returns the cumulative distribution function, its inverse, or one of its parameters, of the
  negative binomial distribution. The kind of the return value and parameters (<strong>$par1</strong>, <strong>$par2</strong>, and
  <strong>$par3</strong>) are determined by <strong>$which</strong>.
  
  The following table lists the return value and parameters by <strong>$which</strong>. CDF, x, r, and p denotes
  cumulative distribution function, the number of failure, the number of success, and the success
  rate for each trial, respectively. Return value and parameters<strong>$which</strong>Return
  value<strong>$par1</strong><strong>$par2</strong><strong>$par3</strong>1CDFxrp2xCDFrp3rxCDFp4pxCDFr

<comment>Param:</comment>
  <info>float</info>  <strong>$par1</strong>   The first parameter
  <info>float</info>  <strong>$par2</strong>   The second parameter
  <info>float</info>  <strong>$par3</strong>   The third parameter
  <info>int</info>    <strong>$which</strong>  The flag to determine what to be calculated

<comment>Return:</comment>
  <info>float</info>  Returns CDF, x, r, or p, determined by <strong>$which</strong>.


id: stats_cdf_noncentral_chisquare
type: function
doc:
<comment>Description:</comment>
  Calculates any one parameter of the non-central chi-square distribution given values for the
  others
  
  Returns the cumulative distribution function, its inverse, or one of its parameters, of the
  non-central chi-square distribution. The kind of the return value and parameters (<strong>$par1</strong>, <strong>$par2</strong>,
  and <strong>$par3</strong>) are determined by <strong>$which</strong>.
  
  The following table lists the return value and parameters by <strong>$which</strong>. CDF, x, k, and lambda denotes
  cumulative distribution function, the value of the random variable, the degree of freedom and the
  non-centrality parameter of the distribution, respectively. Return value and
  parameters<strong>$which</strong>Return value<strong>$par1</strong><strong>$par2</strong><strong>$par3</strong>1CDFxklambda2xCDFklambda3kxCDFlambda4lambdaxCDFk

<comment>Param:</comment>
  <info>float</info>  <strong>$par1</strong>   The first parameter
  <info>float</info>  <strong>$par2</strong>   The second parameter
  <info>float</info>  <strong>$par3</strong>   The third parameter
  <info>int</info>    <strong>$which</strong>  The flag to determine what to be calculated

<comment>Return:</comment>
  <info>float</info>  Returns CDF, x, k, or lambda, determined by <strong>$which</strong>.


id: stats_cdf_noncentral_f
type: function
doc:
<comment>Description:</comment>
  Calculates any one parameter of the non-central F distribution given values for the others
  
  Returns the cumulative distribution function, its inverse, or one of its parameters, of the
  non-central F distribution. The kind of the return value and parameters (<strong>$par1</strong>, <strong>$par2</strong>, <strong>$par3</strong>, and
  <strong>$par4</strong>) are determined by <strong>$which</strong>.
  
  The following table lists the return value and parameters by <strong>$which</strong>. CDF, x, nu1, nu2, and lambda
  denotes cumulative distribution function, the value of the random variable, the degree of freedoms
  and the non-centrality parameter of the distribution, respectively. Return value and
  parameters<strong>$which</strong>Return
  value<strong>$par1</strong><strong>$par2</strong><strong>$par3</strong><strong>$par4</strong>1CDFxnu1nu2lambda2xCDFnu1nu2lambda3nu1xCDFnu2lambda4nu2xCDFnu1lambda5lambdaxCDFnu1nu2

<comment>Param:</comment>
  <info>float</info>  <strong>$par1</strong>   The first parameter
  <info>float</info>  <strong>$par2</strong>   The second parameter
  <info>float</info>  <strong>$par3</strong>   The third parameter
  <info>float</info>  <strong>$par4</strong>   The fourth parameter
  <info>int</info>    <strong>$which</strong>  The flag to determine what to be calculated

<comment>Return:</comment>
  <info>float</info>  Returns CDF, x, nu1, nu2, or lambda, determined by <strong>$which</strong>.


id: stats_cdf_noncentral_t
type: function
doc:
<comment>Description:</comment>
  Calculates any one parameter of the non-central t-distribution give values for the others
  
  Returns the cumulative distribution function, its inverse, or one of its parameters, of the
  non-central t-distribution. The kind of the return value and parameters (<strong>$par1</strong>, <strong>$par2</strong>, and <strong>$par3</strong>)
  are determined by <strong>$which</strong>.
  
  The following table lists the return value and parameters by <strong>$which</strong>. CDF, x, nu, and mu denotes
  cumulative distribution function, the value of the random variable, the degrees of freedom and the
  non-centrality parameter of the distribution, respectively. Return value and
  parameters<strong>$which</strong>Return value<strong>$par1</strong><strong>$par2</strong><strong>$par3</strong>1CDFxnumu2xCDFnumu3nuxCDFmu4muxCDFnu

<comment>Param:</comment>
  <info>float</info>  <strong>$par1</strong>   The first parameter
  <info>float</info>  <strong>$par2</strong>   The second parameter
  <info>float</info>  <strong>$par3</strong>   The third parameter
  <info>int</info>    <strong>$which</strong>  The flag to determine what to be calculated

<comment>Return:</comment>
  <info>float</info>  Returns CDF, x, nu, or mu, determined by <strong>$which</strong>.


id: stats_cdf_normal
type: function
doc:
<comment>Description:</comment>
  Calculates any one parameter of the normal distribution given values for the others
  
  Returns the cumulative distribution function, its inverse, or one of its parameters, of the normal
  distribution. The kind of the return value and parameters (<strong>$par1</strong>, <strong>$par2</strong>, and <strong>$par3</strong>) are determined
  by <strong>$which</strong>.
  
  The following table lists the return value and parameters by <strong>$which</strong>. CDF, x, mu, and sigma denotes
  cumulative distribution function, the value of the random variable, the mean and the standard
  deviation of the normal distribution, respectively. Return value and parameters<strong>$which</strong>Return
  value<strong>$par1</strong><strong>$par2</strong><strong>$par3</strong>1CDFxmusigma2xCDFmusigma3muxCDFsigma4sigmaxCDFmu

<comment>Param:</comment>
  <info>float</info>  <strong>$par1</strong>   The first parameter
  <info>float</info>  <strong>$par2</strong>   The second parameter
  <info>float</info>  <strong>$par3</strong>   The third parameter
  <info>int</info>    <strong>$which</strong>  The flag to determine what to be calculated

<comment>Return:</comment>
  <info>float</info>  Returns CDF, x, mu, or sigma, determined by <strong>$which</strong>.


id: stats_cdf_poisson
type: function
doc:
<comment>Description:</comment>
  Calculates any one parameter of the Poisson distribution given values for the others
  
  Returns the cumulative distribution function, its inverse, or one of its parameters, of the
  Poisson distribution. The kind of the return value and parameters (<strong>$par1</strong> and <strong>$par2</strong>) are determined
  by <strong>$which</strong>.
  
  The following table lists the return value and parameters by <strong>$which</strong>. CDF, x, and lambda denotes
  cumulative distribution function, the value of the random variable, and the parameter of the
  Poisson distribution, respectively. Return value and parameters<strong>$which</strong>Return
  value<strong>$par1</strong><strong>$par2</strong>1CDFxlambda2xCDFlambda3lambdaxCDF

<comment>Param:</comment>
  <info>float</info>  <strong>$par1</strong>   The first parameter
  <info>float</info>  <strong>$par2</strong>   The second parameter
  <info>int</info>    <strong>$which</strong>  The flag to determine what to be calculated

<comment>Return:</comment>
  <info>float</info>  Returns CDF, x, or lambda, determined by <strong>$which</strong>.


id: stats_cdf_t
type: function
doc:
<comment>Description:</comment>
  Calculates any one parameter of the t-distribution given values for the others
  
  Returns the cumulative distribution function, its inverse, or one of its parameters, of the
  t-distribution. The kind of the return value and parameters (<strong>$par1</strong> and <strong>$par2</strong>) are determined by
  <strong>$which</strong>.
  
  The following table lists the return value and parameters by <strong>$which</strong>. CDF, x, and nu denotes
  cumulative distribution function, the value of the random variable, and the degrees of freedom of
  the t-distribution, respectively. Return value and parameters<strong>$which</strong>Return
  value<strong>$par1</strong><strong>$par2</strong>1CDFxnu2xCDFnu3nuxCDF

<comment>Param:</comment>
  <info>float</info>  <strong>$par1</strong>   The first parameter
  <info>float</info>  <strong>$par2</strong>   The second parameter
  <info>int</info>    <strong>$which</strong>  The flag to determine what to be calculated

<comment>Return:</comment>
  <info>float</info>  Returns CDF, x, or nu, determined by <strong>$which</strong>.


id: stats_cdf_uniform
type: function
doc:
<comment>Description:</comment>
  Calculates any one parameter of the uniform distribution given values for the others
  
  Returns the cumulative distribution function, its inverse, or one of its parameters, of the
  uniform distribution. The kind of the return value and parameters (<strong>$par1</strong>, <strong>$par2</strong>, and <strong>$par3</strong>) are
  determined by <strong>$which</strong>.
  
  The following table lists the return value and parameters by <strong>$which</strong>. CDF, x, a, and b denotes
  cumulative distribution function, the value of the random variable, the lower bound and the higher
  bound of the uniform distribution, respectively. Return value and parameters<strong>$which</strong>Return
  value<strong>$par1</strong><strong>$par2</strong><strong>$par3</strong>1CDFxab2xCDFab3axCDFb4bxCDFa

<comment>Param:</comment>
  <info>float</info>  <strong>$par1</strong>   The first parameter
  <info>float</info>  <strong>$par2</strong>   The second parameter
  <info>float</info>  <strong>$par3</strong>   The third parameter
  <info>int</info>    <strong>$which</strong>  The flag to determine what to be calculated

<comment>Return:</comment>
  <info>float</info>  Returns CDF, x, a, or b, determined by <strong>$which</strong>.


id: stats_cdf_weibull
type: function
doc:
<comment>Description:</comment>
  Calculates any one parameter of the Weibull distribution given values for the others
  
  Returns the cumulative distribution function, its inverse, or one of its parameters, of the
  Weibull distribution. The kind of the return value and parameters (<strong>$par1</strong>, <strong>$par2</strong>, and <strong>$par3</strong>) are
  determined by <strong>$which</strong>.
  
  The following table lists the return value and parameters by <strong>$which</strong>. CDF, x, k, and lambda denotes
  cumulative distribution function, the value of the random variable, the shape and the scale
  parameter of the Weibull distribution, respectively. Return value and parameters<strong>$which</strong>Return
  value<strong>$par1</strong><strong>$par2</strong><strong>$par3</strong>1CDFxklambda2xCDFklambda3kxCDFlambda4lambdaxCDFk

<comment>Param:</comment>
  <info>float</info>  <strong>$par1</strong>   The first parameter
  <info>float</info>  <strong>$par2</strong>   The second parameter
  <info>float</info>  <strong>$par3</strong>   The third parameter
  <info>int</info>    <strong>$which</strong>  The flag to determine what to be calculated

<comment>Return:</comment>
  <info>float</info>  Returns CDF, x, k, or lambda, determined by <strong>$which</strong>.


id: stats_covariance
type: function
doc:
<comment>Description:</comment>
  Computes the covariance of two data sets
  
  Returns the covariance of <strong>$a</strong> and <strong>$b</strong>.

<comment>Param:</comment>
  <info>array</info>  <strong>$a</strong>  The first array
  <info>array</info>  <strong>$b</strong>  The second array

<comment>Return:</comment>
  <info>float</info>  Returns the covariance of <strong>$a</strong> and <strong>$b</strong>, or <info>false</info> on failure.


id: stats_dens_beta
type: function
doc:
<comment>Description:</comment>
  Probability density function of the beta distribution
  
  Returns the probability density at <strong>$x</strong>, where the random variable follows the beta distribution of
  which the shape parameters are <strong>$a</strong> and <strong>$b</strong>.

<comment>Param:</comment>
  <info>float</info>  <strong>$x</strong>  The value at which the probability density is calculated
  <info>float</info>  <strong>$a</strong>  The shape parameter of the distribution
  <info>float</info>  <strong>$b</strong>  The shape parameter of the distribution

<comment>Return:</comment>
  <info>float</info>  The probability density at <strong>$x</strong> or <info>false</info> for failure.


id: stats_dens_cauchy
type: function
doc:
<comment>Description:</comment>
  Probability density function of the Cauchy distribution
  
  Returns the probability density at <strong>$x</strong>, where the random variable follows the Cauchy distribution
  whose location and scale are <strong>$ave</strong> and <strong>$stdev</strong>, respectively.

<comment>Param:</comment>
  <info>float</info>  <strong>$x</strong>      The value at which the probability density is calculated
  <info>float</info>  <strong>$ave</strong>    The location parameter of the distribution
  <info>float</info>  <strong>$stdev</strong>  The scale parameter of the distribution

<comment>Return:</comment>
  <info>float</info>  The probability density at <strong>$x</strong> or <info>false</info> for failure.


id: stats_dens_chisquare
type: function
doc:
<comment>Description:</comment>
  Probability density function of the chi-square distribution
  
  Returns the probability density at <strong>$x</strong>, where the random variable follows the chi-square
  distribution of which the degree of freedom is <strong>$dfr</strong>.

<comment>Param:</comment>
  <info>float</info>  <strong>$x</strong>    The value at which the probability density is calculated
  <info>float</info>  <strong>$dfr</strong>  The degree of freedom of the distribution

<comment>Return:</comment>
  <info>float</info>  The probability density at <strong>$x</strong> or <info>false</info> for failure.


id: stats_dens_exponential
type: function
doc:
<comment>Description:</comment>
  Probability density function of the exponential distribution
  
  Returns the probability density at <strong>$x</strong>, where the random variable follows the exponential
  distribution of which the scale is <strong>$scale</strong>.

<comment>Param:</comment>
  <info>float</info>  <strong>$x</strong>      The value at which the probability density is calculated
  <info>float</info>  <strong>$scale</strong>  The scale of the distribution

<comment>Return:</comment>
  <info>float</info>  The probability density at <strong>$x</strong> or <info>false</info> for failure.


id: stats_dens_f
type: function
doc:
<comment>Description:</comment>
  Probability density function of the F distribution
  
  Returns the probability density at <strong>$x</strong>, where the random variable follows the F distribution of
  which the degree of freedoms are <strong>$dfr1</strong> and <strong>$dfr2</strong>.

<comment>Param:</comment>
  <info>float</info>  <strong>$x</strong>     The value at which the probability density is calculated
  <info>float</info>  <strong>$dfr1</strong>  The degree of freedom of the distribution
  <info>float</info>  <strong>$dfr2</strong>  The degree of freedom of the distribution

<comment>Return:</comment>
  <info>float</info>  The probability density at <strong>$x</strong> or <info>false</info> for failure.


id: stats_dens_gamma
type: function
doc:
<comment>Description:</comment>
  Probability density function of the gamma distribution
  
  Returns the probability density at <strong>$x</strong>, where the random variable follows the gamma distribution of
  which the shape parameter is <strong>$shape</strong> and the scale parameter is <strong>$scale</strong>.

<comment>Param:</comment>
  <info>float</info>  <strong>$x</strong>      The value at which the probability density is calculated
  <info>float</info>  <strong>$shape</strong>  The shape parameter of the distribution
  <info>float</info>  <strong>$scale</strong>  The scale parameter of the distribution

<comment>Return:</comment>
  <info>float</info>  The probability density at <strong>$x</strong> or <info>false</info> for failure.


id: stats_dens_laplace
type: function
doc:
<comment>Description:</comment>
  Probability density function of the Laplace distribution
  
  Returns the probability density at <strong>$x</strong>, where the random variable follows the Laplace distribution
  of which the location parameter is <strong>$ave</strong> and the scale parameter is <strong>$stdev</strong>.

<comment>Param:</comment>
  <info>float</info>  <strong>$x</strong>      The value at which the probability density is calculated
  <info>float</info>  <strong>$ave</strong>    The location parameter of the distribution
  <info>float</info>  <strong>$stdev</strong>  The shape parameter of the distribution

<comment>Return:</comment>
  <info>float</info>  The probability density at <strong>$x</strong> or <info>false</info> for failure.


id: stats_dens_logistic
type: function
doc:
<comment>Description:</comment>
  Probability density function of the logistic distribution
  
  Returns the probability density at <strong>$x</strong>, where the random variable follows the logistic distribution
  of which the location parameter is <strong>$ave</strong> and the scale parameter is <strong>$stdev</strong>.

<comment>Param:</comment>
  <info>float</info>  <strong>$x</strong>      The value at which the probability density is calculated
  <info>float</info>  <strong>$ave</strong>    The location parameter of the distribution
  <info>float</info>  <strong>$stdev</strong>  The shape parameter of the distribution

<comment>Return:</comment>
  <info>float</info>  The probability density at <strong>$x</strong> or <info>false</info> for failure.


id: stats_dens_normal
type: function
doc:
<comment>Description:</comment>
  Probability density function of the normal distribution
  
  Returns the probability density at <strong>$x</strong>, where the random variable follows the normal distribution
  of which the mean is <strong>$ave</strong> and the standard deviation is <strong>$stdev</strong>.

<comment>Param:</comment>
  <info>float</info>  <strong>$x</strong>      The value at which the probability density is calculated
  <info>float</info>  <strong>$ave</strong>    The mean of the distribution
  <info>float</info>  <strong>$stdev</strong>  The standard deviation of the distribution

<comment>Return:</comment>
  <info>float</info>  The probability density at <strong>$x</strong> or <info>false</info> for failure.


id: stats_dens_pmf_binomial
type: function
doc:
<comment>Description:</comment>
  Probability mass function of the binomial distribution
  
  Returns the probability mass at <strong>$x</strong>, where the random variable follows the binomial distribution of
  which the number of trials is <strong>$n</strong> and the success rate is <strong>$pi</strong>.

<comment>Param:</comment>
  <info>float</info>  <strong>$x</strong>   The value at which the probability mass is calculated
  <info>float</info>  <strong>$n</strong>   The number of trials of the distribution
  <info>float</info>  <strong>$pi</strong>  The success rate of the distribution

<comment>Return:</comment>
  <info>float</info>  The probability mass at <strong>$x</strong> or <info>false</info> for failure.


id: stats_dens_pmf_hypergeometric
type: function
doc:
<comment>Description:</comment>
  Probability mass function of the hypergeometric distribution
  
  Returns the probability mass at <strong>$n1</strong>, where the random variable follows the hypergeometric
  distribution of which the number of failure is <strong>$n2</strong>, the number of success samples is <strong>$N1</strong>, and the
  number of failure samples is <strong>$N2</strong>.

<comment>Param:</comment>
  <info>float</info>  <strong>$n1</strong>  The number of success, at which the probability mass is calculated
  <info>float</info>  <strong>$n2</strong>  The number of failure of the distribution
  <info>float</info>  <strong>$N1</strong>  The number of success samples of the distribution
  <info>float</info>  <strong>$N2</strong>  The number of failure samples of the distribution

<comment>Return:</comment>
  <info>float</info>  The probability mass at <strong>$n1</strong> or <info>false</info> for failure.


id: stats_dens_pmf_negative_binomial
type: function
doc:
<comment>Description:</comment>
  Probability mass function of the negative binomial distribution
  
  Returns the probability mass at <strong>$x</strong>, where the random variable follows the negative binomial
  distribution of which the number of the success is <strong>$n</strong> and the success rate is <strong>$pi</strong>.

<comment>Param:</comment>
  <info>float</info>  <strong>$x</strong>   The value at which the probability mass is calculated
  <info>float</info>  <strong>$n</strong>   The number of the success of the distribution
  <info>float</info>  <strong>$pi</strong>  The success rate of the distribution

<comment>Return:</comment>
  <info>float</info>  The probability mass at <strong>$x</strong> or <info>false</info> for failure.


id: stats_dens_pmf_poisson
type: function
doc:
<comment>Description:</comment>
  Probability mass function of the Poisson distribution
  
  Returns the probability mass at <strong>$x</strong>, where the random variable follows the Poisson distribution
  whose parameter is <strong>$lb</strong>.

<comment>Param:</comment>
  <info>float</info>  <strong>$x</strong>   The value at which the probability mass is calculated
  <info>float</info>  <strong>$lb</strong>  The parameter of the Poisson distribution

<comment>Return:</comment>
  <info>float</info>  The probability mass at <strong>$x</strong> or <info>false</info> for failure.


id: stats_dens_t
type: function
doc:
<comment>Description:</comment>
  Probability density function of the t-distribution
  
  Returns the probability density at <strong>$x</strong>, where the random variable follows the t-distribution of
  which the degree of freedom is <strong>$dfr</strong>.

<comment>Param:</comment>
  <info>float</info>  <strong>$x</strong>    The value at which the probability density is calculated
  <info>float</info>  <strong>$dfr</strong>  The degree of freedom of the distribution

<comment>Return:</comment>
  <info>float</info>  The probability density at <strong>$x</strong> or <info>false</info> for failure.


id: stats_dens_uniform
type: function
doc:
<comment>Description:</comment>
  Probability density function of the uniform distribution
  
  Returns the probability density at <strong>$x</strong>, where the random variable follows the uniform distribution
  of which the lower bound is <strong>$a</strong> and the upper bound is <strong>$b</strong>.

<comment>Param:</comment>
  <info>float</info>  <strong>$x</strong>  The value at which the probability density is calculated
  <info>float</info>  <strong>$a</strong>  The lower bound of the distribution
  <info>float</info>  <strong>$b</strong>  The upper bound of the distribution

<comment>Return:</comment>
  <info>float</info>  The probability density at <strong>$x</strong> or <info>false</info> for failure.


id: stats_dens_weibull
type: function
doc:
<comment>Description:</comment>
  Probability density function of the Weibull distribution
  
  Returns the probability density at <strong>$x</strong>, where the random variable follows the Weibull distribution
  of which the shape parameter is <strong>$a</strong> and the scale parameter is <strong>$b</strong>.

<comment>Param:</comment>
  <info>float</info>  <strong>$x</strong>  The value at which the probability density is calculated
  <info>float</info>  <strong>$a</strong>  The shape parameter of the distribution
  <info>float</info>  <strong>$b</strong>  The scale parameter of the distribution

<comment>Return:</comment>
  <info>float</info>  The probability density at <strong>$x</strong> or <info>false</info> for failure.


id: stats_harmonic_mean
type: function
doc:
<comment>Description:</comment>
  Returns the harmonic mean of an array of values
  
  Returns the harmonic mean of the values in <strong>$a</strong>.

<comment>Param:</comment>
  <info>array</info>  <strong>$a</strong>  The input array

<comment>Return:</comment>
  <info>number</info>  Returns the harmonic mean of the values in <strong>$a</strong>, or <info>false</info> if <strong>$a</strong> is empty or is not an array.


id: stats_kurtosis
type: function
doc:
<comment>Description:</comment>
  Computes the kurtosis of the data in the array
  
  Returns the kurtosis of the values in <strong>$a</strong>.

<comment>Param:</comment>
  <info>array</info>  <strong>$a</strong>  The input array

<comment>Return:</comment>
  <info>float</info>  Returns the kurtosis of the values in <strong>$a</strong>, or <info>false</info> if <strong>$a</strong> is empty or is not an array.


id: stats_rand_gen_beta
type: function
doc:
<comment>Description:</comment>
  Generates a random deviate from the beta distribution
  
  Returns a random deviate from the beta distribution with parameters A and B. The density of the
  beta is x^(a-1) * (1-x)^(b-1) / B(a,b) for 0 \< x \<. Method R. C. H. Cheng.

<comment>Param:</comment>
  <info>float</info>  <strong>$a</strong>  The shape parameter of the beta distribution
  <info>float</info>  <strong>$b</strong>  The shape parameter of the beta distribution

<comment>Return:</comment>
  <info>float</info>  A random deviate


id: stats_rand_gen_chisquare
type: function
doc:
<comment>Description:</comment>
  Generates a random deviate from the chi-square distribution
  
  Returns a random deviate from the chi-square distribution where the degrees of freedom is  <strong>$df</strong>.

<comment>Param:</comment>
  <info>float</info>  <strong>$df</strong>  The degrees of freedom

<comment>Return:</comment>
  <info>float</info>  A random deviate


id: stats_rand_gen_exponential
type: function
doc:
<comment>Description:</comment>
  Generates a random deviate from the exponential distribution
  
  Returns a random deviate from the exponential distribution of which the scale is <strong>$av</strong>.

<comment>Param:</comment>
  <info>float</info>  <strong>$av</strong>  The scale parameter

<comment>Return:</comment>
  <info>float</info>  A random deviate


id: stats_rand_gen_f
type: function
doc:
<comment>Description:</comment>
  Generates a random deviate from the F distribution
  
  Generates a random deviate from the F (variance ratio) distribution with  "dfn" degrees of freedom
  in the numerator and "dfd" degrees of freedom in  the denominator. Method : directly generates
  ratio of chisquare variates.

<comment>Param:</comment>
  <info>float</info>  <strong>$dfn</strong>  The degrees of freedom in the numerator
  <info>float</info>  <strong>$dfd</strong>  The degrees of freedom in the denominator

<comment>Return:</comment>
  <info>float</info>  A random deviate


id: stats_rand_gen_funiform
type: function
doc:
<comment>Description:</comment>
  Generates uniform float between low (exclusive) and high (exclusive)
  
  Returns a random deviate from the uniform distribution from <strong>$low</strong> to <strong>$high</strong>.

<comment>Param:</comment>
  <info>float</info>  <strong>$low</strong>   The lower bound (inclusive)
  <info>float</info>  <strong>$high</strong>  The upper bound (exclusive)

<comment>Return:</comment>
  <info>float</info>  A random deviate


id: stats_rand_gen_gamma
type: function
doc:
<comment>Description:</comment>
  Generates a random deviate from the gamma distribution
  
  Generates a random deviate from the gamma distribution whose density is (A**R)/Gamma(R) * X**(R-1)
  * Exp(-A*X).

<comment>Param:</comment>
  <info>float</info>  <strong>$a</strong>  location parameter of Gamma distribution (<strong>$a</strong> &gt; 0).
  <info>float</info>  <strong>$r</strong>  shape parameter of Gamma distribution (<strong>$r</strong> &gt; 0).

<comment>Return:</comment>
  <info>float</info>  A random deviate


id: stats_rand_gen_ibinomial
type: function
doc:
<comment>Description:</comment>
  Generates a random deviate from the binomial distribution
  
  Returns a random deviate from the binomial distribution whose number of trials is <strong>$n</strong> and whose
  probability of an event in each trial is <strong>$pp</strong>.

<comment>Param:</comment>
  <info>int</info>    <strong>$n</strong>   The number of trials
  <info>float</info>  <strong>$pp</strong>  The probability of an event in each trial

<comment>Return:</comment>
  <info>int</info>  A random deviate


id: stats_rand_gen_ibinomial_negative
type: function
doc:
<comment>Description:</comment>
  Generates a random deviate from the negative binomial distribution
  
  Returns a random deviate from a negative binomial distribution where the number of success is <strong>$n</strong>
  and the success rate is <strong>$p</strong>.

<comment>Param:</comment>
  <info>int</info>    <strong>$n</strong>  The number of success
  <info>float</info>  <strong>$p</strong>  The success rate

<comment>Return:</comment>
  <info>int</info>  A random deviate, which is the number of failure.


id: stats_rand_gen_int
type: function
doc:
<comment>Description:</comment>
  Generates random integer between 1 and 2147483562
  
  Returns a random integer between 1 and 2147483562

<comment>Return:</comment>
  <info>int</info>  A random integer


id: stats_rand_gen_ipoisson
type: function
doc:
<comment>Description:</comment>
  Generates a single random deviate from a Poisson distribution
  
  Returns a random deviate from the Poisson distribution with parameter <strong>$mu</strong>.

<comment>Param:</comment>
  <info>float</info>  <strong>$mu</strong>  The parameter of the Poisson distribution

<comment>Return:</comment>
  <info>int</info>  A random deviate


id: stats_rand_gen_iuniform
type: function
doc:
<comment>Description:</comment>
  Generates integer uniformly distributed between LOW (inclusive) and HIGH (inclusive)
  
  Returns a random integer from the discrete uniform distribution between <strong>$low</strong> (inclusive) and <strong>$high</strong>
  (inclusive).

<comment>Param:</comment>
  <info>int</info>  <strong>$low</strong>   The lower bound
  <info>int</info>  <strong>$high</strong>  The upper bound

<comment>Return:</comment>
  <info>int</info>  A random integer


id: stats_rand_gen_noncentral_chisquare
type: function
doc:
<comment>Description:</comment>
  Generates a random deviate from the non-central chi-square distribution
  
  Returns a random deviate from the non-central chi-square distribution with degrees of freedom,
  <strong>$df</strong>, and non-centrality parameter, <strong>$xnonc</strong>.

<comment>Param:</comment>
  <info>float</info>  <strong>$df</strong>     The degrees of freedom
  <info>float</info>  <strong>$xnonc</strong>  The non-centrality parameter

<comment>Return:</comment>
  <info>float</info>  A random deviate


id: stats_rand_gen_noncentral_f
type: function
doc:
<comment>Description:</comment>
  Generates a random deviate from the noncentral F distribution
  
  Returns a random deviate from the non-central F distribution where the degrees of freedoms are
  <strong>$dfn</strong> (numerator) and <strong>$dfd</strong> (denominator), and the non-centrality parameter is <strong>$xnonc</strong>.

<comment>Param:</comment>
  <info>float</info>  <strong>$dfn</strong>    The degrees of freedom of the numerator
  <info>float</info>  <strong>$dfd</strong>    The degrees of freedom of the denominator
  <info>float</info>  <strong>$xnonc</strong>  The non-centrality parameter

<comment>Return:</comment>
  <info>float</info>  A random deviate


id: stats_rand_gen_noncentral_t
type: function
doc:
<comment>Description:</comment>
  Generates a single random deviate from a non-central t-distribution
  
  Returns a random deviate from the non-central t-distribution with the degrees of freedom, <strong>$df</strong>, and
  the non-centrality parameter, <strong>$xnonc</strong>.

<comment>Param:</comment>
  <info>float</info>  <strong>$df</strong>     The degrees of freedom
  <info>float</info>  <strong>$xnonc</strong>  The non-centrality parameter

<comment>Return:</comment>
  <info>float</info>  A random deviate


id: stats_rand_gen_normal
type: function
doc:
<comment>Description:</comment>
  Generates a single random deviate from a normal distribution
  
  Returns a random deviate from the normal distribution with mean, <strong>$av</strong>, and standard deviation, <strong>$sd</strong>.

<comment>Param:</comment>
  <info>float</info>  <strong>$av</strong>  The mean of the normal distribution
  <info>float</info>  <strong>$sd</strong>  The standard deviation of the normal distribution

<comment>Return:</comment>
  <info>float</info>  A random deviate


id: stats_rand_gen_t
type: function
doc:
<comment>Description:</comment>
  Generates a single random deviate from a t-distribution
  
  Returns a random deviate from the t-distribution with the degrees of freedom, <strong>$df</strong>.

<comment>Param:</comment>
  <info>float</info>  <strong>$df</strong>  The degrees of freedom

<comment>Return:</comment>
  <info>float</info>  A random deviate


id: stats_rand_get_seeds
type: function
doc:
<comment>Description:</comment>
  Get the seed values of the random number generator
  
  Returns the current seed values of the random number generator

<comment>Return:</comment>
  <info>array</info>  Returns an array of two integers.


id: stats_rand_phrase_to_seeds
type: function
doc:
<comment>Description:</comment>
  Generate two seeds for the RGN random number generator
  
  Generate two seeds for the random number generator from a <strong>$phrase</strong>.

<comment>Param:</comment>
  <info>string</info>  <strong>$phrase</strong>  The input phrase

<comment>Return:</comment>
  <info>array</info>  Returns an array of two integers.


id: stats_rand_ranf
type: function
doc:
<comment>Description:</comment>
  Generates a random floating point number between 0 and 1
  
  Returns a random floating point number from a uniform distribution between 0 (exclusive) and  1
  (exclusive).

<comment>Return:</comment>
  <info>float</info>  A random floating point number


id: stats_rand_setall
type: function
doc:
<comment>Description:</comment>
  Set seed values to the random generator
  
  Set <strong>$iseed1</strong> and <strong>$iseed2</strong> as seed values to the random generator used in statistic functions.

<comment>Param:</comment>
  <info>int</info>  <strong>$iseed1</strong>  The value which is used as the random seed
  <info>int</info>  <strong>$iseed2</strong>  The value which is used as the random seed

<comment>Return:</comment>
  <info>void</info>  No values are returned.


id: stats_skew
type: function
doc:
<comment>Description:</comment>
  Computes the skewness of the data in the array
  
  Returns the skewness of the values in <strong>$a</strong>.

<comment>Param:</comment>
  <info>array</info>  <strong>$a</strong>  The input array

<comment>Return:</comment>
  <info>float</info>  Returns the skewness of the values in <strong>$a</strong>, or <info>false</info> if <strong>$a</strong> is empty or is not an array.


id: stats_standard_deviation
type: function
doc:
<comment>Description:</comment>
  Returns the standard deviation
  
  Returns the standard deviation of the values in <strong>$a</strong>.

<comment>Param:</comment>
  <info>array</info>  <strong>$a</strong>       The array of data to find the standard deviation for. Note that all  values of the
                  array will be cast to <info>float</info>.
  <info>bool</info>   <strong>$sample</strong>  Indicates if <strong>$a</strong> represents a sample of the  population; defaults to <info>false</info>.

<comment>Return:</comment>
  <info>float</info>  Returns the standard deviation on success; <info>false</info> on failure.


id: stats_stat_binomial_coef
type: function
doc:
<comment>Description:</comment>
  Returns a binomial coefficient
  
  Returns the binomial coefficient of <strong>$n</strong> choose <strong>$x</strong>.

<comment>Param:</comment>
  <info>int</info>  <strong>$x</strong>  The number of chooses from the set
  <info>int</info>  <strong>$n</strong>  The number of elements in the set

<comment>Return:</comment>
  <info>float</info>  Returns the binomial coefficient


id: stats_stat_correlation
type: function
doc:
<comment>Description:</comment>
  Returns the Pearson correlation coefficient of two data sets
  
  Returns the Pearson correlation coefficient between <strong>$arr1</strong> and <strong>$arr2</strong>.

<comment>Param:</comment>
  <info>array</info>  <strong>$arr1</strong>  The first array
  <info>array</info>  <strong>$arr2</strong>  The second array

<comment>Return:</comment>
  <info>float</info>  Returns the Pearson correlation coefficient between <strong>$arr1</strong> and <strong>$arr2</strong>, or <info>false</info> on failure.


id: stats_stat_factorial
type: function
doc:
<comment>Description:</comment>
  Returns the factorial of an integer
  
  Returns the factorial of an integer, <strong>$n</strong>.

<comment>Param:</comment>
  <info>int</info>  <strong>$n</strong>  An integer

<comment>Return:</comment>
  <info>float</info>  The factorial of <strong>$n</strong>.


id: stats_stat_independent_t
type: function
doc:
<comment>Description:</comment>
  Returns the t-value from the independent two-sample t-test
  
  Returns the t-value of the independent two-sample t-test between <strong>$arr1</strong> and <strong>$arr2</strong>.
  
  本函数还未编写文档，仅有参数列表。

<comment>Param:</comment>
  <info>array</info>  <strong>$arr1</strong>  The first set of values
  <info>array</info>  <strong>$arr2</strong>  The second set of values

<comment>Return:</comment>
  <info>float</info>  Returns the t-value, or <info>false</info> if failure.


id: stats_stat_innerproduct
type: function
doc:
<comment>Description:</comment>
  Returns the inner product of two vectors
  
  Returns the inner product of <strong>$arr1</strong> and <strong>$arr2</strong>.

<comment>Param:</comment>
  <info>array</info>  <strong>$arr1</strong>  The first array
  <info>array</info>  <strong>$arr2</strong>  The second array

<comment>Return:</comment>
  <info>float</info>  Returns the inner product of <strong>$arr1</strong> and <strong>$arr2</strong>, or <info>false</info> on failure.


id: stats_stat_paired_t
type: function
doc:
<comment>Description:</comment>
  Returns the t-value of the dependent t-test for paired samples
  
  Returns the t-value of the dependent t-test for paired samples <strong>$arr1</strong> and <strong>$arr2</strong>.

<comment>Param:</comment>
  <info>array</info>  <strong>$arr1</strong>  The first samples
  <info>array</info>  <strong>$arr2</strong>  The second samples

<comment>Return:</comment>
  <info>float</info>  Returns the t-value, or <info>false</info> if failure.


id: stats_stat_percentile
type: function
doc:
<comment>Description:</comment>
  Returns the percentile value
  
  Returns the <strong>$perc</strong>-th percentile value of the array <strong>$arr</strong>.

<comment>Param:</comment>
  <info>array</info>  <strong>$arr</strong>   The input array
  <info>float</info>  <strong>$perc</strong>  The percentile

<comment>Return:</comment>
  <info>float</info>  Returns the percentile values of the input array.


id: stats_stat_powersum
type: function
doc:
<comment>Description:</comment>
  Returns the power sum of a vector
  
  Returns the sum of the <strong>$power</strong>-th power of a vector represented as an array <strong>$arr</strong>.

<comment>Param:</comment>
  <info>array</info>  <strong>$arr</strong>    The input array
  <info>float</info>  <strong>$power</strong>  The power

<comment>Return:</comment>
  <info>float</info>  Returns the power sum of the input array.


id: stats_variance
type: function
doc:
<comment>Description:</comment>
  Returns the variance
  
  Returns the variance of the values in <strong>$a</strong>.

<comment>Param:</comment>
  <info>array</info>  <strong>$a</strong>       The array of data to find the standard deviation for. Note that all  values of the
                  array will be cast to <info>float</info>.
  <info>bool</info>   <strong>$sample</strong>  Indicates if <strong>$a</strong> represents a sample of the  population; defaults to <info>false</info>.

<comment>Return:</comment>
  <info>float</info>  Returns the variance on success; <info>false</info> on failure.


id: stdClass
type: class
doc:
<comment>Description:</comment>
  具有动态属性的通用空类。
  
  此类的对象可以使用 new 运算符实例化，也可以通过类型转换为对象创建。几个 PHP 函数也会创建此类的实
  例，比如 <strong>json_decode()</strong>、<strong>mysqli_fetch_object()</strong> 或 PDOStatement::fetchObject。
  
  尽管没有实现 __get()/__set() 魔术方法，但此类允许动态属性且不需要 #[\AllowDynamicProperties] 属
  性。
  
  这不是 PHP 的基类，因为 PHP 没有通用基类的概念。然而，可以创建继承 <class>stdClass</class> 的自定义类，从而继承动
  态属性的功能。


id: stomp_connect_error
type: function
doc:
<comment>Description:</comment>
  Returns a string description of the last connect error
  
  Returns a string description of the last connect error.

<comment>Return:</comment>
  <info>string</info>  A string that describes the error, or <info>null</info> if no error occurred.


id: stomp_version
type: function
doc:
<comment>Description:</comment>
  Gets the current stomp extension version
  
  Returns a string containing the version of the current stomp extension.

<comment>Return:</comment>
  <info>string</info>  It returns the current stomp extension version


id: str_contains
type: function
doc:
<comment>Description:</comment>
  确定字符串是否包含指定子串
  
  执行大小写区分的检查，表明 <strong>$needle</strong> 是否包含在 <strong>$haystack</strong> 中。

<comment>Param:</comment>
  <info>string</info>  <strong>$haystack</strong>  在其中搜索的字符串。
  <info>string</info>  <strong>$needle</strong>    要在 <strong>$haystack</strong> 中搜索的子串。

<comment>Return:</comment>
  <info>bool</info>  如果 <strong>$needle</strong> 在 <strong>$haystack</strong> 中，返回 <info>true</info>，否则返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>str_ends_with()</strong>
   * <strong>str_starts_with()</strong>
   * <strong>stripos()</strong>
   * <strong>strrpos()</strong>
   * <strong>strripos()</strong>
   * <strong>strstr()</strong>
   * <strong>strpbrk()</strong>
   * <strong>substr()</strong>
   * <strong>preg_match()</strong>


id: str_decrement
type: function
doc:
<comment>Description:</comment>
  Decrement an alphanumeric string
  
  Returns the decremented alphanumeric ASCII <strong>$string</strong>.

<comment>Param:</comment>
  <info>string</info>  <strong>$string</strong>  The input string.

<comment>Return:</comment>
  <info>string</info>  Returns the decremented alphanumeric ASCII string.

<comment>See Also:</comment>
   * <strong>str_increment()</strong>


id: str_ends_with
type: function
doc:
<comment>Description:</comment>
  检查字符串是否以指定子串结尾
  
  执行大小写区分的检查，表明 <strong>$haystack</strong> 是否以 <strong>$needle</strong> 结尾。

<comment>Param:</comment>
  <info>string</info>  <strong>$haystack</strong>  在其中搜索的字符串。
  <info>string</info>  <strong>$needle</strong>    要在 <strong>$haystack</strong> 中搜索的子串。

<comment>Return:</comment>
  <info>bool</info>  如果 <strong>$haystack</strong> 以 <strong>$needle</strong> 结尾，返回 <info>true</info>，否则返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>str_contains()</strong>
   * <strong>str_starts_with()</strong>
   * <strong>stripos()</strong>
   * <strong>strrpos()</strong>
   * <strong>strripos()</strong>
   * <strong>strstr()</strong>
   * <strong>strpbrk()</strong>
   * <strong>substr()</strong>
   * <strong>preg_match()</strong>


id: str_getcsv
type: function
doc:
<comment>Description:</comment>
  解析 CSV 字符串为一个数组
    
  
  以 CSV 字段格式解析字符串输入，并返回包含读取字段的数组。
  
  此函数考虑区域设置。如果 <return>LC_CTYPE</return> 是类似 <return>en_US.UTF-8</return> 的值，此函数将错误的读取单字节编码的字符串。

<comment>Param:</comment>
  <info>string</info>  <strong>$string</strong>     待解析的字符串。
  <info>string</info>  <strong>$separator</strong>  设定字段界定符（仅一个单字节字符）。
  <info>string</info>  <strong>$enclosure</strong>  设定字段包裹字符（仅一个单字节字符）。
  <info>string</info>  <strong>$escape</strong>     设置转义字符（最多一个单字节字符）。默认为反斜线（<return>\</return>）。空字符串（<return>""</return>）禁用专有
                      转义机制。
                      
                      Usually an <strong>$enclosure</strong> character is escaped inside a field by doubling it;
                      however, the <strong>$escape</strong> character can be used as an alternative. So for the
                      default parameter values <return>""</return> and <return>\"</return> have the same meaning. Other than allowing
                      to escape the <strong>$enclosure</strong> character the <strong>$escape</strong> character has no special
                      meaning; it isn't even meant to escape itself.

<comment>Return:</comment>
  <info>array</info>  返回一个包含读取到的字段的索引数组。

<comment>See Also:</comment>
   * <strong>fgetcsv()</strong>


id: str_increment
type: function
doc:
<comment>Description:</comment>
  Increment an alphanumeric string
  
  Returns the incremented alphanumeric ASCII <strong>$string</strong>.

<comment>Param:</comment>
  <info>string</info>  <strong>$string</strong>  The input string.

<comment>Return:</comment>
  <info>string</info>  Returns the incremented alphanumeric ASCII string.

<comment>See Also:</comment>
   * <strong>str_decrement()</strong>


id: str_ireplace
type: function
doc:
<comment>Description:</comment>
  str_replace 的忽略大小写版本
  
  该函数返回字符串或者数组。该字符串或数组是将 <strong>$subject</strong> 中全部的 <strong>$search</strong> 都被 <strong>$replace</strong> 替换（忽略大
  小写）之后的结果。
  
  要根据模式而不是固定字符串替换文本，将 <strong>preg_replace()</strong> 与 <return>i</return> 模式修饰符一起使用。

<comment>Param:</comment>
  <info>array|string</info>  <strong>$search</strong>   要搜索的值，就像是 needle。可以使用 array 来提供多个 needle。
  <info>array|string</info>  <strong>$replace</strong>  <strong>$search</strong> 的替换值。一个数组可以被用来指定多重替换。
  <info>string|array</info>  <strong>$subject</strong>  要被搜索和替换的字符串或数组，就像是 haystack。
                          
                          如果 <strong>$subject</strong> 是一个数组，替换操作将遍历整个 <strong>$subject</strong>，并且也将返回一个数
                          组。
  <info>int</info>           <strong>$count</strong>    如果被指定，它的值将被设置为替换发生的次数。

<comment>Return:</comment>
  <info>string|array</info>  返回替换后的字符串或者数组。

<comment>See Also:</comment>
   * <strong>str_replace()</strong>
   * <strong>preg_replace()</strong>
   * <strong>strtr()</strong>


id: str_pad
type: function
doc:
<comment>Description:</comment>
  使用另一个字符串填充字符串为指定长度
  
  该函数返回 <strong>$string</strong> 被从左端、右端或者同时两端被填充到制定长度后的结果。如果可选的 <strong>$pad_string</strong> 参数
  没有被指定，<strong>$string</strong> 将被空格字符填充，否则它将被 <strong>$pad_string</strong> 填充到指定长度。

<comment>Param:</comment>
  <info>string</info>  <strong>$string</strong>      输入字符串。
  <info>int</info>     <strong>$length</strong>      填充字符串到最后的长度。 如果 <strong>$length</strong> 的值是负数，小于或者等于输入字符串的长
                       度，不会发生任何填充，并会返回 <strong>$string</strong>。
  <info>string</info>  <strong>$pad_string</strong>  如果填充字符的长度不能被 <strong>$pad_string</strong> 整除，那么 <strong>$pad_string</strong> 可能会被缩短。
  <info>int</info>     <strong>$pad_type</strong>    可选的 <strong>$pad_type</strong> 参数的可能值为 <info>STR_PAD_RIGHT</info>，<info>STR_PAD_LEFT</info> 或 <info>STR_PAD_BOTH</info>。
                       如果没有指定 <strong>$pad_type</strong>，则假定它是 <info>STR_PAD_RIGHT</info>。

<comment>Return:</comment>
  <info>string</info>  返回填充后的字符串。

<comment>See Also:</comment>
   * <strong>mb_str_pad()</strong>


id: str_repeat
type: function
doc:
<comment>Description:</comment>
  重复一个字符串
  
  返回 <strong>$string</strong> 重复 <strong>$times</strong> 次后的结果。

<comment>Param:</comment>
  <info>string</info>  <strong>$string</strong>  待操作的字符串。
  <info>int</info>     <strong>$times</strong>   <strong>$string</strong> 被重复的次数。
                   
                   <strong>$times</strong> 必须大于等于 0。如果 <strong>$times</strong> 被设置为 0，函数返回空字符串。

<comment>Return:</comment>
  <info>string</info>  返回重复后的字符串。

<comment>See Also:</comment>
   * for
   * <strong>str_pad()</strong>
   * <strong>substr_count()</strong>


id: str_replace
type: function
doc:
<comment>Description:</comment>
  子字符串替换
  
  该函数返回字符串或者数组。该字符串或数组是将 <strong>$subject</strong> 中全部的 <strong>$search</strong> 都被 <strong>$replace</strong> 替换之后的结
  果。
  
  要根据模式而不是固定字符串替换文本，使用 <strong>preg_replace()</strong>。

<comment>Param:</comment>
  <info>array|string</info>  <strong>$search</strong>   查找的目标值，也就是 needle。一个数组可以指定多个目标。
  <info>array|string</info>  <strong>$replace</strong>  <strong>$search</strong> 的替换值。一个数组可以被用来指定多重替换。
  <info>string|array</info>  <strong>$subject</strong>  执行替换的数组或者字符串。也就是 haystack。
                          
                          如果 <strong>$subject</strong> 是一个数组，替换操作将遍历整个 <strong>$subject</strong>，返回值也将是一个数
                          组。
  <info>int</info>           <strong>$count</strong>    如果被指定，它的值将被设置为替换发生的次数。

<comment>Return:</comment>
  <info>string|array</info>  该函数返回替换后的数组或者字符串。

<comment>See Also:</comment>
   * <strong>str_ireplace()</strong>
   * <strong>substr_replace()</strong>
   * <strong>preg_replace()</strong>
   * <strong>strtr()</strong>


id: str_rot13
type: function
doc:
<comment>Description:</comment>
  对字符串执行 ROT13 转换
  
  对 <strong>$string</strong> 参数执行 ROT13 编码并将结果字符串返回。
  
  ROT13 编码简单地使用字母表中后面第 13 个字母替换当前字母，同时忽略非字母表中的字符。编码和解码都使
  用相同的函数，传递一个编码过的字符串作为参数，将得到原始字符串。

<comment>Param:</comment>
  <info>string</info>  <strong>$string</strong>  输入字符串。

<comment>Return:</comment>
  <info>string</info>  返回给定字符串的 ROT13 版本。


id: str_shuffle
type: function
doc:
<comment>Description:</comment>
  随机打乱一个字符串
  
  <strong>str_shuffle()</strong> 函数打乱一个字符串，使用任何一种可能的排序方案。
  
  本函数并不会生成安全加密的值，并且不可用于加密或者要求返回值不可猜测的目的。
  
  如果需要加密安全随机，则可以将 <class>Random\Engine\Secure</class> 引擎用于 <class>Random\Randomizer</class>。对于简单的用例，
  <strong>random_int()</strong> 和 <strong>random_bytes()</strong> 函数提供了操作系统的 CSPRNG 支持的方便且安全的 API。

<comment>Param:</comment>
  <info>string</info>  <strong>$string</strong>  输入字符串。

<comment>Return:</comment>
  <info>string</info>  返回打乱后的字符串。

<comment>See Also:</comment>
   * <strong>Random\Randomizer::shuffleBytes()</strong>
   * <strong>Random\Randomizer::shuffleArray()</strong>


id: str_split
type: function
doc:
<comment>Description:</comment>
  将字符串转换为数组
  
  将一个字符串转换为数组。

<comment>Param:</comment>
  <info>string</info>  <strong>$string</strong>  输入字符串。
  <info>int</info>     <strong>$length</strong>  每一段的长度。

<comment>Return:</comment>
  <info>array</info>  如果指定了可选的 <strong>$length</strong> 参数，返回数组中的每个元素长度均为 <strong>$length</strong> 的块，除了最后一个块，
         如果字符串不是均匀划分，则可能会更短。默认 <strong>$length</strong> 是 <return>1</return>，这意味着每个块的大小是一个字节。

<comment>See Also:</comment>
   * <strong>mb_str_split()</strong>
   * <strong>chunk_split()</strong>
   * <strong>preg_split()</strong>
   * <strong>explode()</strong>
   * <strong>count_chars()</strong>
   * <strong>str_word_count()</strong>
   * for


id: str_starts_with
type: function
doc:
<comment>Description:</comment>
  检查字符串是否以指定子串开头
  
  执行大小写区分的检查，表明 <strong>$haystack</strong> 是否以 <strong>$needle</strong> 开头。

<comment>Param:</comment>
  <info>string</info>  <strong>$haystack</strong>  在其中搜索的字符串。
  <info>string</info>  <strong>$needle</strong>    要在 <strong>$haystack</strong> 中搜索的子串。

<comment>Return:</comment>
  <info>bool</info>  如果 <strong>$haystack</strong> 以 <strong>$needle</strong> 开头，返回 <info>true</info>，否则返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>str_contains()</strong>
   * <strong>str_ends_with()</strong>
   * <strong>stripos()</strong>
   * <strong>strrpos()</strong>
   * <strong>strripos()</strong>
   * <strong>strstr()</strong>
   * <strong>strpbrk()</strong>
   * <strong>substr()</strong>
   * <strong>preg_match()</strong>


id: str_word_count
type: function
doc:
<comment>Description:</comment>
  返回字符串中单词的使用情况
  
  统计 <strong>$string</strong> 中单词的数量。如果可选的参数 <strong>$format</strong> 没有被指定，那么返回值是一个代表单词数量的整型
  数。如果指定了 <strong>$format</strong> 参数，返回值将是一个数组，数组的内容则取决于 <strong>$format</strong> 参数。<strong>$format</strong> 的可能值
  和相应的输出结果如下所列。
  
  对于这个函数的目的来说，单词的定义是一个与区域设置相关的字符串。这个字符串可以包含字母字符，也可以
  包含 "'" 和 "-" 字符（但不能以这两个字符开始）。 请注意，不支持多字节编码的字符串。

<comment>Param:</comment>
  <info>string</info>       <strong>$string</strong>      字符串。
  <info>int</info>          <strong>$format</strong>      指定函数的返回值。当前支持的值如下：  0 - 返回单词数量  1 - 返回一个包含
                            <strong>$string</strong> 中全部单词的数组  2 - 返回关联数组。数组的键是单词在 <strong>$string</strong> 中
                            出现的数值位置，数组的值是这个单词
                            
                            0 - 返回单词数量
                            
                            1 - 返回一个包含 <strong>$string</strong> 中全部单词的数组
                            
                            2 - 返回关联数组。数组的键是单词在 <strong>$string</strong> 中出现的数值位置，数组的值是
                            这个单词
  <info>string|null</info>  <strong>$characters</strong>  附加的字符串列表，其中的字符将被视为单词的一部分。

<comment>Return:</comment>
  <info>array|int</info>  返回一个数组或整型数，这取决于 <strong>$format</strong> 参数的选择。

<comment>See Also:</comment>
   * <strong>explode()</strong>
   * <strong>preg_split()</strong>
   * <strong>count_chars()</strong>
   * <strong>substr_count()</strong>


id: strcasecmp
type: function
doc:
<comment>Description:</comment>
  二进制安全比较字符串（不区分大小写）
  
  二进制安全比较字符串（不区分大小写）。比较不会注意区域；只有 ASCII 字母以不区分大小写的方式进行比
  较。

<comment>Param:</comment>
  <info>string</info>  <strong>$string1</strong>  第一个字符串
  <info>string</info>  <strong>$string2</strong>  第二个字符串

<comment>Return:</comment>
  <info>int</info>  如果 <strong>$string1</strong> 小于 <strong>$string2</strong> 返回 <return>-1</return>；如果 <strong>$string1</strong> 大于 <strong>$string2</strong> 返回 <return>1</return>；如果两者相等，返回
       <return>0</return>。

<comment>See Also:</comment>
   * <strong>strcmp()</strong>
   * <strong>preg_match()</strong>
   * <strong>substr_compare()</strong>
   * <strong>strncasecmp()</strong>
   * <strong>stristr()</strong>
   * <strong>substr()</strong>


id: strcmp
type: function
doc:
<comment>Description:</comment>
  二进制安全字符串比较
  
  注意该比较区分大小写。

<comment>Param:</comment>
  <info>string</info>  <strong>$string1</strong>  第一个字符串。
  <info>string</info>  <strong>$string2</strong>  第二个字符串。

<comment>Return:</comment>
  <info>int</info>  如果 <strong>$string1</strong> 小于 <strong>$string2</strong> 返回 <return>-1</return>；如果 <strong>$string1</strong> 大于 <strong>$string2</strong> 返回 <return>1</return>；如果两者相等，返回
       <return>0</return>。

<comment>See Also:</comment>
   * <strong>strcasecmp()</strong>
   * <strong>preg_match()</strong>
   * <strong>substr_compare()</strong>
   * <strong>strncmp()</strong>
   * <strong>strstr()</strong>
   * <strong>substr()</strong>


id: strcoll
type: function
doc:
<comment>Description:</comment>
  基于区域设置的字符串比较
  
  注意该比较区分大小写。和 <strong>strcmp()</strong> 不同，该函数不是二进制安全的。
  
  <strong>strcoll()</strong> 使用当前区域设置进行比较。如果当前区域为 C 或 POSIX，该函数等同于 <strong>strcmp()</strong>。

<comment>Param:</comment>
  <info>string</info>  <strong>$string1</strong>  第一个字符串。
  <info>string</info>  <strong>$string2</strong>  第二个字符串。

<comment>Return:</comment>
  <info>int</info>  如果 <strong>$string1</strong> 小于 <strong>$string2</strong> 返回 \< 0； 如果 <strong>$string1</strong> 大于 <strong>$string2</strong> 返回 &gt; 0；如果两者相
       等，返回 0。

<comment>See Also:</comment>
   * <strong>preg_match()</strong>
   * <strong>strcmp()</strong>
   * <strong>strcasecmp()</strong>
   * <strong>substr()</strong>
   * <strong>stristr()</strong>
   * <strong>strncasecmp()</strong>
   * <strong>strncmp()</strong>
   * <strong>strstr()</strong>
   * <strong>setlocale()</strong>


id: strcspn
type: function
doc:
<comment>Description:</comment>
  获取不匹配遮罩的起始子字符串的长度
  
  返回 <strong>$string</strong> 中，所有字符都不存在于 <strong>$characters</strong> 范围的起始子字符串的长度。
  
  如果省略 <strong>$offset</strong> 和 <strong>$length</strong>，则将检查所有的 <strong>$string</strong>。如果包含前面两个参数，那么跟调用
  <return>strcspn(substr($string, $offset, $length), $characters)</return> 效果相同（参阅  获取更新信息）。

<comment>Param:</comment>
  <info>string</info>    <strong>$string</strong>      要检查的字符串。
  <info>string</info>    <strong>$characters</strong>  包含每个不允许的字符的字符串。
  <info>int</info>       <strong>$offset</strong>      <strong>$string</strong> 开始搜索的位置。
                         
                         如果给出的 <strong>$offset</strong> 是非负数，然后 <strong>strcspn()</strong> 将会从 <strong>$string</strong> 的 <strong>$offset</strong> 位置
                         开始检查字符串。例如。在字符串“<return>abcdef</return>”中，位置为 <return>0</return> 的字符是“<return>a</return>”，位置为 <return>2</return> 的
                         字符是“<return>c</return>”，等等。
                         
                         如果给出的 <strong>$offset</strong> 是负数，则 <strong>strcspn()</strong> 将会从距离 <strong>$string</strong> 末尾的第 <strong>$offset</strong>
                         个位置开始检查字符串。
  <info>int|null</info>  <strong>$length</strong>      要检查的部分 <strong>$string</strong> 的长度。
                         
                         如果给出的 <strong>$length</strong> 是非负数，然后将检查 <strong>$string</strong> 中起始位置后的 <strong>$length</strong> 字
                         符。
                         
                         If <strong>$length</strong> is given and is negative, then <strong>$string</strong> will be examined from the
                         starting position up to <strong>$length</strong> characters from the end of <strong>$string</strong>.

<comment>Return:</comment>
  <info>int</info>  Returns the length of the initial segment of <strong>$string</strong> which consists entirely of characters
       not in <strong>$characters</strong>.
       
       When a <strong>$offset</strong> parameter is set, the returned length is counted starting from this position,
       not from the beginning of <strong>$string</strong>.

<comment>See Also:</comment>
   * <strong>strspn()</strong>


id: streamWrapper
type: class
doc:
<comment>Description:</comment>
  允许实现自定义协议处理程序和流，以便与其它文件系统函数（比如 <strong>fopen()</strong>、 <strong>fread()</strong> 等）一起使用。
  
  这不是真实的类，只是如何定义协议的原型类。
  
  不使用此处描述的方法而使用其它方式可能会导致未定义行为。
  
  一旦流函数尝试访问与其关联的协议，就会初始化此类的实例。


id: streamWrapper::__construct
type: function
doc:
<comment>Description:</comment>
  Constructs a new stream wrapper
  
  Called when opening the stream wrapper, right before streamWrapper::stream_open.


id: streamWrapper::__destruct
type: function
doc:
<comment>Description:</comment>
  Destructs an existing stream wrapper
  
  Called when closing the stream wrapper, right before streamWrapper::stream_flush.


id: streamWrapper::dir_closedir
type: function
doc:
<comment>Description:</comment>
  Close directory handle
  
  This method is called in response to <strong>closedir()</strong>.
  
  Any resources which were locked, or allocated, during opening and use of the directory stream
  should be released.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>closedir()</strong>
   * streamWrapper::dir_opendir


id: streamWrapper::dir_opendir
type: function
doc:
<comment>Description:</comment>
  Open directory handle
  
  This method is called in response to <strong>opendir()</strong>.

<comment>Param:</comment>
  <info>string</info>  <strong>$path</strong>     Specifies the URL that was passed to <strong>opendir()</strong>.
                    
                    The URL can be broken apart with <strong>parse_url()</strong>.
  <info>int</info>     <strong>$options</strong>  

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>opendir()</strong>
   * streamWrapper::dir_closedir
   * <strong>parse_url()</strong>


id: streamWrapper::dir_readdir
type: function
doc:
<comment>Description:</comment>
  Read entry from directory handle
  
  This method is called in response to <strong>readdir()</strong>.

<comment>Return:</comment>
  <info>string</info>  Should return <info>string</info> representing the next filename, or <info>false</info> if there is no next file.
          
          The return value will be casted to <info>string</info>.

<comment>See Also:</comment>
   * <strong>readdir()</strong>


id: streamWrapper::dir_rewinddir
type: function
doc:
<comment>Description:</comment>
  Rewind directory handle
  
  This method is called in response to <strong>rewinddir()</strong>.
  
  Should reset the output generated by streamWrapper::dir_readdir. i.e.: The next call to
  streamWrapper::dir_readdir should return the first entry in the location returned by
  streamWrapper::dir_opendir.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>rewinddir()</strong>
   * streamWrapper::dir_readdir


id: streamWrapper::mkdir
type: function
doc:
<comment>Description:</comment>
  Create a directory
  
  This method is called in response to <strong>mkdir()</strong>.
  
  In order for the appropriate error message to be returned this method should not be defined if the
  wrapper does not support creating directories.

<comment>Param:</comment>
  <info>string</info>  <strong>$path</strong>     Directory which should be created.
  <info>int</info>     <strong>$mode</strong>     The value passed to <strong>mkdir()</strong>.
  <info>int</info>     <strong>$options</strong>  A bitwise mask of values, such as <info>STREAM_MKDIR_RECURSIVE</info>.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>mkdir()</strong>
   * streamwrapper::rmdir


id: streamWrapper::rename
type: function
doc:
<comment>Description:</comment>
  Renames a file or directory
  
  This method is called in response to <strong>rename()</strong>.
  
  Should attempt to rename <strong>$path_from</strong> to <strong>$path_to</strong>
  
  In order for the appropriate error message to be returned this method should not be defined if the
  wrapper does not support renaming files.

<comment>Param:</comment>
  <info>string</info>  <strong>$path_from</strong>  The URL to the current file.
  <info>string</info>  <strong>$path_to</strong>    The URL which the <strong>$path_from</strong> should be renamed to.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>rename()</strong>


id: streamWrapper::rmdir
type: function
doc:
<comment>Description:</comment>
  Removes a directory
  
  This method is called in response to <strong>rmdir()</strong>.
  
  In order for the appropriate error message to be returned this method should not be defined if the
  wrapper does not support removing directories.

<comment>Param:</comment>
  <info>string</info>  <strong>$path</strong>     The directory URL which should be removed.
  <info>int</info>     <strong>$options</strong>  A bitwise mask of values, such as <info>STREAM_MKDIR_RECURSIVE</info>.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>rmdir()</strong>
   * streamwrapper::mkdir
   * streamwrapper::unlink


id: streamWrapper::stream_cast
type: function
doc:
<comment>Description:</comment>
  Retrieve the underlaying resource
  
  This method is called in response to <strong>stream_select()</strong>.

<comment>Param:</comment>
  <info>int</info>  <strong>$cast_as</strong>  Can be <info>STREAM_CAST_FOR_SELECT</info> when <strong>stream_select()</strong> is calling <strong>stream_cast()</strong> or
                 <info>STREAM_CAST_AS_STREAM</info> when <strong>stream_cast()</strong> is called for other uses.

<comment>Return:</comment>
  <info>resource</info>  Should return the underlying stream resource used by the wrapper, or <info>false</info>.

<comment>See Also:</comment>
   * <strong>stream_select()</strong>


id: streamWrapper::stream_close
type: function
doc:
<comment>Description:</comment>
  Close a resource
  
  This method is called in response to <strong>fclose()</strong>.
  
  All resources that were locked, or allocated, by the wrapper should be released.

<comment>Return:</comment>
  <info>void</info>  没有返回值。

<comment>See Also:</comment>
   * <strong>fclose()</strong>
   * streamWrapper::dir_closedir


id: streamWrapper::stream_eof
type: function
doc:
<comment>Description:</comment>
  Tests for end-of-file on a file pointer
  
  This method is called in response to <strong>feof()</strong>.

<comment>Return:</comment>
  <info>bool</info>  Should return <info>true</info> if the read/write position is at the end of the stream and if no more
        data is available to be read, or <info>false</info> otherwise.

<comment>See Also:</comment>
   * <strong>feof()</strong>


id: streamWrapper::stream_flush
type: function
doc:
<comment>Description:</comment>
  Flushes the output
  
  This method is called in response to <strong>fflush()</strong> and when the stream is being closed while any
  unflushed data has been written to it before.
  
  If you have cached data in your stream but not yet stored it into the underlying storage, you
  should do so now.

<comment>Return:</comment>
  <info>bool</info>  Should return <info>true</info> if the cached data was successfully stored (or if there was no data to
        store), or <info>false</info> if the data could not be stored.

<comment>See Also:</comment>
   * <strong>fflush()</strong>


id: streamWrapper::stream_lock
type: function
doc:
<comment>Description:</comment>
  Advisory file locking
  
  This method is called in response to <strong>flock()</strong>, when <strong>file_put_contents()</strong> (when <strong>$flags</strong> contains
  <info>LOCK_EX</info>), <strong>stream_set_blocking()</strong> and when closing the stream (<info>LOCK_UN</info>).

<comment>Param:</comment>
  <info>int</info>  <strong>$operation</strong>  <strong>$operation</strong> is one of the following: <info>LOCK_SH</info> to acquire a shared lock (reader).
                   <info>LOCK_EX</info> to acquire an exclusive lock (writer). <info>LOCK_UN</info> to release a lock (shared
                   or exclusive). <info>LOCK_NB</info> if you don't want <strong>flock()</strong> to block while locking. (not
                   supported on Windows)
                   
                   <info>LOCK_SH</info> to acquire a shared lock (reader).
                   
                   <info>LOCK_EX</info> to acquire an exclusive lock (writer).
                   
                   <info>LOCK_UN</info> to release a lock (shared or exclusive).
                   
                   <info>LOCK_NB</info> if you don't want <strong>flock()</strong> to block while locking. (not supported on
                   Windows)

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>stream_set_blocking()</strong>
   * <strong>flock()</strong>


id: streamWrapper::stream_metadata
type: function
doc:
<comment>Description:</comment>
  Change stream metadata
  
  This method is called to set metadata on the stream. It is called when one of the following
  functions is called on a stream URL: <strong>touch()</strong><strong>chmod()</strong><strong>chown()</strong><strong>chgrp()</strong> Please note that some of these
  operations may not be available on your system.

<comment>Param:</comment>
  <info>string</info>  <strong>$path</strong>    The file path or URL to set metadata.  Note that in the case of a URL, it must be
                   a :// delimited URL.  Other URL forms are not supported.
  <info>int</info>     <strong>$option</strong>  One of: <info>STREAM_META_TOUCH</info> (The method was called in response to
                   <strong>touch()</strong>)<info>STREAM_META_OWNER_NAME</info> (The method was called in response to <strong>chown()</strong> with
                   string parameter)<info>STREAM_META_OWNER</info> (The method was called in response to
                   <strong>chown()</strong>)<info>STREAM_META_GROUP_NAME</info> (The method was called in response to
                   <strong>chgrp()</strong>)<info>STREAM_META_GROUP</info> (The method was called in response to
                   <strong>chgrp()</strong>)<info>STREAM_META_ACCESS</info> (The method was called in response to  <strong>chmod()</strong>)
  <info>mixed</info>   <strong>$value</strong>   If <strong>$option</strong> is <info>STREAM_META_TOUCH</info>: <info>Array</info> consisting of two arguments of the <strong>touch()</strong>
                   function.<info>STREAM_META_OWNER_NAME</info> or <info>STREAM_META_GROUP_NAME</info>: The name of the owner
                   user/group as <info>string</info>.<info>STREAM_META_OWNER</info> or <info>STREAM_META_GROUP</info>: The value owner
                   user/group argument as <info>int</info>.<info>STREAM_META_ACCESS</info>: The argument of the <strong>chmod()</strong> as
                   <info>int</info>.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。 If <strong>$option</strong> is not implemented, <info>false</info> should be
        returned.

<comment>See Also:</comment>
   * <strong>touch()</strong>
   * <strong>chmod()</strong>
   * <strong>chown()</strong>
   * <strong>chgrp()</strong>


id: streamWrapper::stream_open
type: function
doc:
<comment>Description:</comment>
  Opens file or URL
  
  This method is called immediately after the wrapper is initialized (f.e. by <strong>fopen()</strong> and
  <strong>file_get_contents()</strong>).

<comment>Param:</comment>
  <info>string</info>       <strong>$path</strong>         Specifies the URL that was passed to the original function.
                             
                             The URL can be broken apart with <strong>parse_url()</strong>.  Note that only URLs
                             delimited by :// are supported. : and :/ while technically valid URLs,
                             are not.
  <info>string</info>       <strong>$mode</strong>         The mode used to open the file, as detailed for <strong>fopen()</strong>.
                             
                             Remember to check if the <strong>$mode</strong> is valid for the <strong>$path</strong> requested.
  <info>int</info>          <strong>$options</strong>      Holds additional flags set by the streams API. It can hold one or more
                             of the following values OR'd together. FlagDescription<info>STREAM_USE_PATH</info>If
                             <strong>$path</strong> is relative, search for the resource using the include_path.
                             <info>STREAM_REPORT_ERRORS</info>If this flag is set, you are responsible for
                             raising errors using <strong>trigger_error()</strong> during opening of the stream.  If
                             this flag is not set, you should not raise any errors.
  <info>string|null</info>  <strong>$opened_path</strong>  If the <strong>$path</strong> is opened successfully, and <info>STREAM_USE_PATH</info> is set in
                             <strong>$options</strong>, <strong>$opened_path</strong> should be set to the full path of the
                             file/resource that was actually opened.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>fopen()</strong>
   * <strong>parse_url()</strong>


id: streamWrapper::stream_read
type: function
doc:
<comment>Description:</comment>
  Read from stream
  
  This method is called in response to <strong>fread()</strong> and <strong>fgets()</strong>.
  
  Remember to update the read/write position of the stream (by the number of bytes that were
  successfully read).

<comment>Param:</comment>
  <info>int</info>  <strong>$count</strong>  How many bytes of data from the current position should be returned.

<comment>Return:</comment>
  <info>string|false</info>  If there are less than <strong>$count</strong> bytes available, as many as are available should be
                returned. If no more data is available, an empty string should be returned. To
                signal that reading failed, <info>false</info> should be returned.

<comment>See Also:</comment>
   * <strong>fread()</strong>
   * <strong>fgets()</strong>


id: streamWrapper::stream_seek
type: function
doc:
<comment>Description:</comment>
  Seeks to specific location in a stream
  
  This method is called in response to <strong>fseek()</strong>.
  
  The read/write position of the stream should be updated according to the <strong>$offset</strong> and <strong>$whence</strong>.

<comment>Param:</comment>
  <info>int</info>  <strong>$offset</strong>  The stream offset to seek to.
  <info>int</info>  <strong>$whence</strong>  Possible values: <info>SEEK_SET</info> - Set position equal to <strong>$offset</strong> bytes.<info>SEEK_CUR</info> - Set
                position to current location plus <strong>$offset</strong>.<info>SEEK_END</info> - Set position to end-of-file
                plus <strong>$offset</strong>.
                
                The current implementation never sets <strong>$whence</strong> to <info>SEEK_CUR</info>; instead such seeks are
                internally converted to <info>SEEK_SET</info> seeks.

<comment>Return:</comment>
  <info>bool</info>  Return <info>true</info> if the position was updated, <info>false</info> otherwise.

<comment>See Also:</comment>
   * <strong>fseek()</strong>


id: streamWrapper::stream_set_option
type: function
doc:
<comment>Description:</comment>
  Change stream options
  
  This method is called to set options on the stream.

<comment>Param:</comment>
  <info>int</info>  <strong>$option</strong>  One of: <info>STREAM_OPTION_BLOCKING</info> (The method was called in response to
                <strong>stream_set_blocking()</strong>)<info>STREAM_OPTION_READ_TIMEOUT</info> (The method was called in response
                to <strong>stream_set_timeout()</strong>)<info>STREAM_OPTION_WRITE_BUFFER</info> (The method was called in
                response to  <strong>stream_set_write_buffer()</strong>)
  <info>int</info>  <strong>$arg1</strong>    If <strong>$option</strong> is <info>STREAM_OPTION_BLOCKING</info>: requested blocking mode (1 meaning block 0 not
                blocking).<info>STREAM_OPTION_READ_TIMEOUT</info>: the timeout in
                seconds.<info>STREAM_OPTION_WRITE_BUFFER</info>: buffer mode (<info>STREAM_BUFFER_NONE</info> or
                <info>STREAM_BUFFER_FULL</info>).
  <info>int</info>  <strong>$arg2</strong>    If <strong>$option</strong> is <info>STREAM_OPTION_BLOCKING</info>: This option is not
                set.<info>STREAM_OPTION_READ_TIMEOUT</info>: the timeout in
                microseconds.<info>STREAM_OPTION_WRITE_BUFFER</info>: the requested buffer size.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。 If <strong>$option</strong> is not implemented, <info>false</info> should be
        returned.

<comment>See Also:</comment>
   * <strong>stream_set_blocking()</strong>
   * <strong>stream_set_timeout()</strong>
   * <strong>stream_set_write_buffer()</strong>


id: streamWrapper::stream_stat
type: function
doc:
<comment>Description:</comment>
  Retrieve information about a file resource
  
  This method is called in response to <strong>fstat()</strong>.

<comment>Return:</comment>
  <info>array|false</info>  See <strong>stat()</strong>.

<comment>See Also:</comment>
   * <strong>stat()</strong>
   * streamwrapper::url_stat


id: streamWrapper::stream_tell
type: function
doc:
<comment>Description:</comment>
  Retrieve the current position of a stream
  
  This method is called in response to <strong>fseek()</strong> to determine the current position.

<comment>Return:</comment>
  <info>int</info>  Should return the current position of the stream.

<comment>See Also:</comment>
   * streamWrapper::stream_tell


id: streamWrapper::stream_truncate
type: function
doc:
<comment>Description:</comment>
  Truncate stream
  
  Will respond to truncation, e.g., through <strong>ftruncate()</strong>.

<comment>Param:</comment>
  <info>int</info>  <strong>$new_size</strong>  The new size.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>ftruncate()</strong>


id: streamWrapper::stream_write
type: function
doc:
<comment>Description:</comment>
  Write to stream
  
  This method is called in response to <strong>fwrite()</strong>.
  
  Remember to update the current position of the stream by number of bytes that were successfully
  written.

<comment>Param:</comment>
  <info>string</info>  <strong>$data</strong>  Should be stored into the underlying stream.
                 
                 If there is not enough room in the underlying stream, store as much as possible.

<comment>Return:</comment>
  <info>int</info>  Should return the number of bytes that were successfully stored, or 0 if none could be
       stored.

<comment>See Also:</comment>
   * <strong>fwrite()</strong>


id: streamWrapper::unlink
type: function
doc:
<comment>Description:</comment>
  Delete a file
  
  This method is called in response to <strong>unlink()</strong>.
  
  In order for the appropriate error message to be returned this method should not be defined if the
  wrapper does not support removing files.

<comment>Param:</comment>
  <info>string</info>  <strong>$path</strong>  The file URL which should be deleted.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>unlink()</strong>
   * streamWrapper::rmdir


id: streamWrapper::url_stat
type: function
doc:
<comment>Description:</comment>
  Retrieve information about a file
  
  This method is called in response to all <strong>stat()</strong> related functions, such as:
  <strong>copy()</strong><strong>fileperms()</strong><strong>fileinode()</strong><strong>filesize()</strong><strong>fileowner()</strong><strong>filegroup()</strong><strong>fileatime()</strong><strong>filemtime()</strong><strong>filectime()</strong><strong>filetype()</strong><strong>is_writable()</strong><strong>is_readable()</strong><strong>is_executable()</strong><strong>is_file()</strong><strong>is_dir()</strong><strong>is_link()</strong><strong>file_exists()</strong><strong>lstat()</strong><strong>stat()</strong>SplFileInfo::getPermsSplFileInfo::getInodeSplFileInfo::getSizeSplFileInfo::getOwnerSplFileInfo::getGroupSplFileInfo::getATimeSplFileInfo::getMTimeSplFileInfo::getCTimeSplFileInfo::getTypeSplFileInfo::isWritableSplFileInfo::isReadableSplFileInfo::isExecutableSplFileInfo::isFileSplFileInfo::isDirSplFileInfo::isLinkRecursiveDirectoryIterator::hasChildren

<comment>Param:</comment>
  <info>string</info>  <strong>$path</strong>   The file path or URL to stat.  Note that in the case of a URL, it must be a ://
                  delimited URL.  Other URL forms are not supported.
  <info>int</info>     <strong>$flags</strong>  Holds additional flags set by the streams API. It can hold one or more of the
                  following values OR'd together. FlagDescriptionSTREAM_URL_STAT_LINK For resources
                  with the ability to link to other resource (such as an HTTP Location: forward, or
                  a filesystem symlink).  This flag specified that only information about the link
                  itself should be returned, not the resource pointed to by the link.  This flag is
                  set in response to calls to <strong>lstat()</strong>, <strong>is_link()</strong>, or <strong>filetype()</strong>.
                  STREAM_URL_STAT_QUIETIf this flag is set, your wrapper should not raise any
                  errors.  If this flag is not set, you are responsible for reporting errors using
                  the <strong>trigger_error()</strong> function during stating of the path.

<comment>Return:</comment>
  <info>array|false</info>  Should return an <info>array</info> with the same elements as <strong>stat()</strong> does. Unknown or unavailable
               values should be set to a rational value (usually <info>0</info>). Special attention should be
               payed to <return>mode</return> as documented under <strong>stat()</strong>. Should return <info>false</info> on failure.

<comment>See Also:</comment>
   * <strong>stat()</strong>
   * streamwrapper::stream_stat


id: stream_bucket_append
type: function
doc:
<comment>Description:</comment>
  Append bucket to brigade
    
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>void</info>  


id: stream_bucket_make_writeable
type: function
doc:
<comment>Description:</comment>
  Returns a bucket object from the brigade to operate on
    
  
  This function is called whenever there is the need to access and operate on the content contains
  in a brigade. It is typically called from php_user_filter::filter.

<comment>Param:</comment>
  <info>resource</info>  <strong>$brigade</strong>  The brigade to return a bucket object from.

<comment>Return:</comment>
  <info>object|null</info>  Returns a bucket object with the properties listed below or <info>null</info>. data (<info>string</info>)
               <strong>$data</strong><return>bucket</return> The current string in the bucket. datalen (<info>integer</info>) <strong>$datalen</strong><return>bucket</return> The
               length of the string in the bucket.
               
               <strong>$data</strong><return>bucket</return> The current string in the bucket.
               
               <strong>$datalen</strong><return>bucket</return> The length of the string in the bucket.

<comment>See Also:</comment>
   * <strong>stream_bucket_append()</strong>
   * <strong>stream_bucket_prepend()</strong>


id: stream_bucket_new
type: function
doc:
<comment>Description:</comment>
  Create a new bucket for use on the current stream
    
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>object</info>  


id: stream_bucket_prepend
type: function
doc:
<comment>Description:</comment>
  Prepend bucket to brigade
    
  
  This function can be called to prepend a bucket to a bucket brigade. It is typically called from
  php_user_filter::filter.

<comment>Param:</comment>
  <info>resource</info>  <strong>$brigade</strong>  <strong>$brigade</strong> is a resource pointing to a <return>bucket brigade</return> which contains one or more
                      <return>bucket</return> objects.
  <info>object</info>    <strong>$bucket</strong>   A bucket object.

<comment>Return:</comment>
  <info>void</info>  没有返回值。


id: stream_context_create
type: function
doc:
<comment>Description:</comment>
  创建资源流上下文
  
  创建并返回一个资源流上下文，该资源流中包含了 <strong>$options</strong> 中提前设定的所有参数的值。

<comment>Param:</comment>
  <info>array|null</info>  <strong>$options</strong>  必须是一个二维关联数组或 <info>null</info>，二维关联数组格式如下：
                        <return>$arr['wrapper']['option'] = $value</return>。请参考 上下文（Context）选项 中可用的封
                        装协议和选项列表。
                        
                        默认为 <info>null</info>。
  <info>array|null</info>  <strong>$params</strong>   必须是 <return>$arr['parameter'] = $value</return> 格式的关联数组或 <info>null</info>。 请参考 上下文
                        （Context）参数 里的标准资源流参数列表。

<comment>Return:</comment>
  <info>resource</info>  上下文资源流，类型为 <info>resource</info> 。

<comment>See Also:</comment>
   * <strong>stream_context_set_option()</strong>
   * 支持的封装协议列表（）
   * 上下文选项（）


id: stream_context_get_default
type: function
doc:
<comment>Description:</comment>
  Retrieve the default stream context
  
  Returns the default stream context which is used whenever file operations (<strong>fopen()</strong>,
  <strong>file_get_contents()</strong>, etc...) are called without a context parameter.  Options for the default
  context can optionally be specified with this function using the same syntax as
  <strong>stream_context_create()</strong>.

<comment>Param:</comment>
  <info>array|null</info>  <strong>$options</strong>  <strong>$options</strong> must be an associative array of associative arrays in the format
                        <return>$arr['wrapper']['option'] = $value</return>, or <info>null</info>.

<comment>Return:</comment>
  <info>resource</info>  A stream context <info>resource</info>.

<comment>See Also:</comment>
   * <strong>stream_context_create()</strong>
   * <strong>stream_context_set_default()</strong>
   * Listing of supported wrappers with context options ().


id: stream_context_get_options
type: function
doc:
<comment>Description:</comment>
  获取资源流/数据包/上下文的参数
  
  返回指定资源流或者上下文的数组参数。

<comment>Param:</comment>
  <info>resource</info>  <strong>$stream_or_context</strong>  获取参数信息的 <info>stream</info> 或者 <info>context</info> 。

<comment>Return:</comment>
  <info>array</info>  返回一个包含有原参数的关联数组。


id: stream_context_get_params
type: function
doc:
<comment>Description:</comment>
  Retrieves parameters from a context
  
  Retrieves parameter and options information from the stream or context.

<comment>Param:</comment>
  <info>resource</info>  <strong>$context</strong>  A stream <info>resource</info> or a context <info>resource</info>

<comment>Return:</comment>
  <info>array</info>  Returns an associate array containing all context options and parameters.

<comment>See Also:</comment>
   * <strong>stream_context_set_option()</strong>
   * <strong>stream_context_set_params()</strong>


id: stream_context_set_default
type: function
doc:
<comment>Description:</comment>
  Set the default stream context
  
  Set the default stream context which will be used whenever file operations (<strong>fopen()</strong>,
  <strong>file_get_contents()</strong>, etc...) are called without a context parameter. Uses the same syntax as
  <strong>stream_context_create()</strong>.

<comment>Param:</comment>
  <info>array</info>  <strong>$options</strong>  The options to set for the default context.
                   
                   <strong>$options</strong> must be an associative array of associative arrays in the format
                   <return>$arr['wrapper']['option'] = $value</return>.

<comment>Return:</comment>
  <info>resource</info>  Returns the default stream context.

<comment>See Also:</comment>
   * <strong>stream_context_create()</strong>
   * <strong>stream_context_get_default()</strong>
   * Listing of supported wrappers with context options ().


id: stream_context_set_option
type: function
doc:
<comment>Description:</comment>
  对资源流、数据包或者上下文设置参数
  
  给指定的上下文设置参数。参数 <strong>$value</strong>  是设置 <strong>$wrapper</strong> 的 <strong>$option</strong> 参数的值。

<comment>Param:</comment>
  <info>resource</info>  <strong>$stream_or_context</strong>  需要添加参数的资源流或者上下文。
  <info>string</info>    <strong>$wrapper</strong>            封装协议的名称（可能与协议不同）。 请参考 上下文（Context）选项和参
                                数 查看资源流参数列表。
  <info>string</info>    <strong>$option</strong>             选项的名称。
  <info>mixed</info>     <strong>$value</strong>              选项的值。
  <info>array</info>     <strong>$options</strong>            给 <strong>$stream_or_context</strong> 设置的选项。
                                
                                <strong>$options</strong> 必须是一个 <return>$arr['wrapper']['option'] = $value</return> 格式二维关联
                                数组 。
                                
                                请参考 上下文（Context）选项和参数 查看资源流参数列表。

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。


id: stream_context_set_options
type: function
doc:
<comment>Description:</comment>
  Sets options on the specified context
  
  Sets options on the specified context.

<comment>Param:</comment>
  <info>resource</info>  <strong>$context</strong>  The stream or context resource to apply the options to.
  <info>array</info>     <strong>$options</strong>  The options to set for <strong>$context</strong>.
                      
                      <strong>$options</strong> must be an associative <info>array</info> of associative arrays in the format
                      $array['wrapper']['option'] = $value.
                      
                      Refer to context options and parameters for a listing of stream options.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>stream_context_set_option()</strong>


id: stream_context_set_params
type: function
doc:
<comment>Description:</comment>
  Set parameters for a stream/wrapper/context
  
  Sets parameters on the specified context.

<comment>Param:</comment>
  <info>resource</info>  <strong>$context</strong>  The stream or context to apply the parameters too.
  <info>array</info>     <strong>$params</strong>   An associative array of parameters to be set in the following format:
                      <return>$params['paramname'] = "paramvalue";</return>.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>stream_notification_callback()</strong>


id: stream_copy_to_stream
type: function
doc:
<comment>Description:</comment>
  Copies data from one stream to another
  
  Makes a copy of up to <strong>$length</strong> bytes of data from the current position (or from the <strong>$offset</strong>
  position, if specified) in <strong>$from</strong> to <strong>$to</strong>. If <strong>$length</strong> is <info>null</info>, all remaining content in <strong>$from</strong> will
  be copied.

<comment>Param:</comment>
  <info>resource</info>  <strong>$from</strong>    The source stream
  <info>resource</info>  <strong>$to</strong>      The destination stream
  <info>int|null</info>  <strong>$length</strong>  Maximum bytes to copy. By default all bytes left are copied.
  <info>int</info>       <strong>$offset</strong>  The offset where to start to copy data

<comment>Return:</comment>
  <info>int|false</info>  Returns the total count of bytes copied, 或者在失败时返回 <info>false</info>.

<comment>See Also:</comment>
   * <strong>copy()</strong>


id: stream_filter_append
type: function
doc:
<comment>Description:</comment>
  Attach a filter to a stream
  
  Adds <strong>$filtername</strong> to the list of filters attached to <strong>$stream</strong>.

<comment>Param:</comment>
  <info>resource</info>  <strong>$stream</strong>      The target stream.
  <info>string</info>    <strong>$filtername</strong>  The filter name.
  <info>int</info>       <strong>$read_write</strong>  By default, <strong>stream_filter_append()</strong> will attach the filter to the <return>read
                         filter chain</return> if the file was opened for reading (i.e. File Mode: <return>r</return>, and/or
                         <return>+</return>).  The filter will also be attached to the <return>write filter chain</return> if the file
                         was opened for writing (i.e. File Mode: <return>w</return>, <return>a</return>, and/or <return>+</return>).
                         <info>STREAM_FILTER_READ</info>, <info>STREAM_FILTER_WRITE</info>, and/or <info>STREAM_FILTER_ALL</info> can also
                         be passed to the <strong>$read_write</strong> parameter to override this behavior.
  <info>mixed</info>     <strong>$params</strong>      This filter will be added with the specified  <strong>$params</strong> to the end of the
                         list and will therefore be called last during stream operations. To add a
                         filter to the beginning of the list, use <strong>stream_filter_prepend()</strong>.

<comment>Return:</comment>
  <info>resource</info>  Returns a resource on success or <info>false</info> on failure. The resource can be used to refer to
            this filter instance during a call to <strong>stream_filter_remove()</strong>.
            
            <info>false</info> is returned if <strong>$stream</strong> is not a resource or if <strong>$filtername</strong> cannot be located.

<comment>See Also:</comment>
   * <strong>stream_filter_register()</strong>
   * <strong>stream_filter_prepend()</strong>
   * <strong>stream_get_filters()</strong>


id: stream_filter_prepend
type: function
doc:
<comment>Description:</comment>
  Attach a filter to a stream
  
  Adds <strong>$filtername</strong> to the list of filters attached to <strong>$stream</strong>.

<comment>Param:</comment>
  <info>resource</info>  <strong>$stream</strong>      The target stream.
  <info>string</info>    <strong>$filtername</strong>  The filter name.
  <info>int</info>       <strong>$read_write</strong>  By default, <strong>stream_filter_prepend()</strong> will attach the filter to the <return>read
                         filter chain</return> if the file was opened for reading (i.e. File Mode: <return>r</return>, and/or
                         <return>+</return>).  The filter will also be attached to the <return>write filter chain</return> if the file
                         was opened for writing (i.e. File Mode: <return>w</return>, <return>a</return>, and/or <return>+</return>).
                         <info>STREAM_FILTER_READ</info>, <info>STREAM_FILTER_WRITE</info>, and/or <info>STREAM_FILTER_ALL</info> can also
                         be passed to the <strong>$read_write</strong> parameter to override this behavior. See
                         <strong>stream_filter_append()</strong> for an example of using this parameter.
  <info>mixed</info>     <strong>$params</strong>      This filter will be added with the specified <strong>$params</strong> to the beginning of
                         the list and will therefore be called first during stream operations.  To
                         add a filter to the end of the list, use <strong>stream_filter_append()</strong>.

<comment>Return:</comment>
  <info>resource</info>  Returns a resource on success or <info>false</info> on failure. The resource can be used to refer to
            this filter instance during a call to <strong>stream_filter_remove()</strong>.
            
            <info>false</info> is returned if <strong>$stream</strong> is not a resource or if <strong>$filtername</strong> cannot be located.

<comment>See Also:</comment>
   * <strong>stream_filter_register()</strong>
   * <strong>stream_filter_append()</strong>


id: stream_filter_register
type: function
doc:
<comment>Description:</comment>
  Register a user defined stream filter
  
  <strong>stream_filter_register()</strong> allows you to implement your own filter on any registered stream used
  with all the other filesystem functions (such as <strong>fopen()</strong>, <strong>fread()</strong> etc.).

<comment>Param:</comment>
  <info>string</info>  <strong>$filter_name</strong>  The filter name to be registered.
  <info>string</info>  <strong>$class</strong>        To implement a filter, you need to define a class as an extension of
                        <class>php_user_filter</class> with a number of member functions. When performing
                        read/write operations on the stream to which your filter is attached, PHP
                        will pass the data through your filter (and any other filters attached to
                        that stream) so that the data may be modified as desired. You must implement
                        the methods exactly as described in <class>php_user_filter</class> - doing otherwise will
                        lead to undefined behaviour.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。
        
        <strong>stream_filter_register()</strong> will return <info>false</info> if the <strong>$filter_name</strong> is already defined.

<comment>See Also:</comment>
   * <strong>stream_wrapper_register()</strong>
   * <strong>stream_filter_append()</strong>
   * <strong>stream_filter_prepend()</strong>


id: stream_filter_remove
type: function
doc:
<comment>Description:</comment>
  从资源流里移除某个过滤器
  
  移除之前通过 <strong>stream_filter_prepend()</strong> 或者 <strong>stream_filter_append()</strong> 添加到资源流里面的过滤器。 在移除
  之前，残留在过滤器内部缓冲区里的所有数据刷新到下一个过滤器。

<comment>Param:</comment>
  <info>resource</info>  <strong>$stream_filter</strong>  需要被移除的资源流过滤器。

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>stream_filter_register()</strong>
   * <strong>stream_filter_append()</strong>
   * <strong>stream_filter_prepend()</strong>


id: stream_get_contents
type: function
doc:
<comment>Description:</comment>
  读取资源流到一个字符串
  
  与 <strong>file_get_contents()</strong> 一样，但是 <strong>stream_get_contents()</strong> 是对一个已经打开的资源流进行操作，并将其内
  容写入一个字符串返回。 返回的内容取决于 <strong>$length</strong> 字节长度和 <strong>$offset</strong> 指定的起始位置。

<comment>Param:</comment>
  <info>resource</info>  <strong>$stream</strong>  一个资源流（例如 <strong>fopen()</strong> 操作之后返回的结果）
  <info>int|null</info>  <strong>$length</strong>  需要读取的最大的字节数。默认为 <info>null</info>（读取全部的缓冲数据）。
  <info>int</info>       <strong>$offset</strong>  在读取数据之前先查找指定的偏移量。如果这个数字是负数，就不进行查找，直接从当前
                     位置开始读取。

<comment>Return:</comment>
  <info>string|false</info>  返回一个字符串  或者在失败时返回 <info>false</info>.

<comment>See Also:</comment>
   * <strong>fgets()</strong>
   * <strong>fread()</strong>
   * <strong>fpassthru()</strong>


id: stream_get_filters
type: function
doc:
<comment>Description:</comment>
  获取已注册的数据流过滤器列表
  
  获取当前运行系统中已注册的数据流过滤器列表。

<comment>Return:</comment>
  <info>array</info>  返回一个包含所有有效的数据流过滤器名字的索引数组。

<comment>See Also:</comment>
   * <strong>stream_filter_register()</strong>
   * <strong>stream_get_wrappers()</strong>


id: stream_get_line
type: function
doc:
<comment>Description:</comment>
  从资源流里读取一行直到给定的定界符
  
  从给定的资源流里读取一行。
  
  当读取到 <strong>$length</strong> 个字节数就结束，或者当在读取的非空字符串中发现  <strong>$ending</strong> （不包含到返回值里）也结
  束，又或者遇到了 EOF 也结束（总之以上条件中哪个先出现就以哪个为准）。
  
  这个函数与 <strong>fgets()</strong> 几乎是相同的，唯一的区别是在这个函数里面允许指定行尾的定界符，而不是使用标准的
  \n， \r 还有 \r\n ，并且返回值中不包含定界符。（翻译注：也可以把 \n 等作为定界符传入 <strong>$ending</strong> ）

<comment>Param:</comment>
  <info>resource</info>  <strong>$stream</strong>  一个有效的文件句柄。
  <info>int</info>       <strong>$length</strong>  需要从句柄中读取的最大字节数。不支持负值。 <return>0</return> 表示默认的套接字块大小（socket
                     chunk size），即 <return>8192</return> 字节。
  <info>string</info>    <strong>$ending</strong>  可选参数，字符串定界符。

<comment>Return:</comment>
  <info>string|false</info>  返回一个字符串，该字符串的内容根据 <strong>$length</strong> 字节数从 <strong>$stream</strong> 里读取， 或者在失败时返
                回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>fread()</strong>
   * <strong>fgets()</strong>
   * <strong>fgetc()</strong>


id: stream_get_meta_data
type: function
doc:
<comment>Description:</comment>
  从流或文件指针中获取 header/meta 数据
  
  返回现有 <strong>$stream</strong> 的有关信息。

<comment>Param:</comment>
  <info>resource</info>  <strong>$stream</strong>  流可以是通过 <strong>fopen()</strong>、<strong>fsockopen()</strong>、 <strong>pfsockopen()</strong>、<strong>stream_socket_client()</strong> 创建的
                     任何流。

<comment>Return:</comment>
  <info>array</info>  返回的数组包含以下元素：
         
         <return>timed_out</return>（bool）——如果流在最后调用  <strong>fread()</strong> 或 <strong>fgets()</strong>  时等待超时，则为 <info>true</info>。
         
         <return>blocked</return>（bool）——如果流是堵塞 IO  模式，则为 <info>true</info>。参见 <strong>stream_set_blocking()</strong>。
         
         <return>eof</return>（bool）——如果流已经到达文件结尾（end-of-file），则为 <info>true</info>。 注意套接字流即使
         <return>unread_bytes</return>  不为零也可以为 <info>true</info>。确定是否还可以读取更多数据，使用  <strong>feof()</strong> 而不是读取此
         值。
         
         <return>unread_bytes</return>（int）——当前在 PHP 内部缓冲区的字节数。
         
         不要在脚本中使用此值。
         
         <return>stream_type</return>（string）——描述了流底层实现的标记。
         
         <return>wrapper_type</return>（string）——描述了在流之上的协议封装实现的标记。更多关于封装协议的信息见 。
         
         <return>wrapper_data</return>（mixed）——当前流附加的封装协议数据。更多封装协议及其数据的信息见 。
         
         <return>mode</return>（string）——对当前流所要求的访问类型（见 fopen() 参考中的表格 1）。
         
         <return>seekable</return>（bool）——是否可以在当前流中定位。
         
         <return>uri</return>（string）——与当前流关联的 URI 或文件名。
         
         <return>crypto</return>（array）——当前流的 TLS  连接元数据。（注意：仅在资源流使用 TLS 时提供。）

<comment>See Also:</comment>
   * <strong>get_headers()</strong>
   * $http_response_header


id: stream_get_transports
type: function
doc:
<comment>Description:</comment>
  获取已注册的套接字传输协议列表
  
  返回一个包含当前运行系统中所有套接字传输协议名称的索引数组。

<comment>Return:</comment>
  <info>array</info>  返回一个套接字传输协议名称的索引数组。

<comment>See Also:</comment>
   * <strong>stream_get_filters()</strong>
   * <strong>stream_get_wrappers()</strong>


id: stream_get_wrappers
type: function
doc:
<comment>Description:</comment>
  获取已注册的流类型
  
  获取在当前运行系统中已经注册并可使用的流类型列表。

<comment>Return:</comment>
  <info>array</info>  返回一个索引数组，该数组里包含了当前运行系统中可使用的流类型的名称。

<comment>See Also:</comment>
   * <strong>stream_wrapper_register()</strong>


id: stream_is_local
type: function
doc:
<comment>Description:</comment>
  Checks if a stream is a local stream
  
  Checks if a stream, or a URL, is a local one or not.

<comment>Param:</comment>
  <info>resource|string</info>  <strong>$stream</strong>  The stream <info>resource</info> or URL to check.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。


id: stream_isatty
type: function
doc:
<comment>Description:</comment>
  Check if a stream is a TTY
  
  Determines if stream <strong>$stream</strong> refers to a valid terminal type device. This is a more portable
  version of <strong>posix_isatty()</strong>, since it works on Windows systems too.

<comment>Param:</comment>
  <info>resource</info>  <strong>$stream</strong>  

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。


id: stream_notification_callback
type: function
doc:
<comment>Description:</comment>
  A callback function for the notification context parameter
  
  A <info>callable</info> function, used by the notification context parameter, called during an event.
  
  This is not a real function, only a prototype of how the function should be.

<comment>Param:</comment>
  <info>int</info>          <strong>$notification_code</strong>  One of the <info>STREAM_NOTIFY_*</info> notification constants.
  <info>int</info>          <strong>$severity</strong>           One of the <info>STREAM_NOTIFY_SEVERITY_*</info> notification constants.
  <info>string|null</info>  <strong>$message</strong>            Passed if a descriptive message is available for the event.
  <info>int</info>          <strong>$message_code</strong>       Passed if a descriptive message code is available for the event.
                                   
                                   The meaning of this value is dependent on the specific wrapper in
                                   use.
  <info>int</info>          <strong>$bytes_transferred</strong>  If applicable, the <strong>$bytes_transferred</strong> will be populated.
  <info>int</info>          <strong>$bytes_max</strong>          If applicable, the <strong>$bytes_max</strong> will be populated.

<comment>Return:</comment>
  <info>void</info>  没有返回值。

<comment>See Also:</comment>
   * 


id: stream_register_wrapper
type: function
doc:
<comment>Description:</comment>
  别名 stream_wrapper_register
  
  此函数是该函数的别名： <strong>stream_wrapper_register()</strong>.


id: stream_resolve_include_path
type: function
doc:
<comment>Description:</comment>
  Resolve filename against the include path
    
  
  Resolve <strong>$filename</strong> against the include path according to the same rules as <strong>fopen()</strong>/<strong>include()</strong>.

<comment>Param:</comment>
  <info>string</info>  <strong>$filename</strong>  The filename to resolve.

<comment>Return:</comment>
  <info>string|false</info>  Returns a <info>string</info> containing the resolved absolute filename,  或者在失败时返回 <info>false</info>.


id: stream_select
type: function
doc:
<comment>Description:</comment>
  Runs the equivalent of the select() system call on the given
     arrays of streams with a timeout specified by seconds and microseconds
  
  The <strong>stream_select()</strong> function accepts arrays of streams and waits for them to change status. Its
  operation is equivalent to that of the <strong>socket_select()</strong> function except in that it acts on streams.

<comment>Param:</comment>
  <info>array|null</info>  <strong>$read</strong>          The streams listed in the <strong>$read</strong> array will be watched to see if
                             characters become available for reading (more precisely, to see if a
                             read will not block - in particular, a stream resource is also ready on
                             end-of-file, in which case an <strong>fread()</strong> will return a zero length
                             string).
  <info>array|null</info>  <strong>$write</strong>         The streams listed in the <strong>$write</strong> array will be watched to see if a
                             write will not block.
  <info>array|null</info>  <strong>$except</strong>        The streams listed in the <strong>$except</strong> array will be watched for high
                             priority exceptional ("out-of-band") data arriving.
                             
                             When <strong>stream_select()</strong> returns, the arrays <strong>$read</strong>, <strong>$write</strong> and <strong>$except</strong> are
                             modified to indicate which stream resource(s) actually changed status.
                             The original keys of the <info>array</info>s are preserved.
  <info>int|null</info>    <strong>$seconds</strong>       The <strong>$seconds</strong> and <strong>$microseconds</strong> together form the timeout parameter,
                             <strong>$seconds</strong> specifies the number of seconds while <strong>$microseconds</strong> the number
                             of microseconds. The <strong>$timeout</strong> is an upper bound on the amount of time
                             that <strong>stream_select()</strong> will wait before it returns. If <strong>$seconds</strong> and
                             <strong>$microseconds</strong> are both set to <return>0</return>, <strong>stream_select()</strong> will not wait for data
                             - instead it will return immediately, indicating the current status of
                             the streams.
                             
                             If <strong>$seconds</strong> is <info>null</info> <strong>stream_select()</strong> can block indefinitely, returning
                             only when an event on one of the watched streams occurs (or if a signal
                             interrupts the system call).
                             
                             Using a timeout value of <return>0</return> allows you to instantaneously poll the
                             status of the streams, however, it is NOT a good idea to use a <return>0</return>
                             timeout value in a loop as it will cause your script to consume too
                             much CPU time.
                             
                             It is much better to specify a timeout value of a few seconds, although
                             if you need to be checking and running other code concurrently, using a
                             timeout value of at least <return>200000</return> microseconds will help reduce the CPU
                             usage of your script.
                             
                             Remember that the timeout value is the maximum time that will elapse;
                             <strong>stream_select()</strong> will return as soon as the requested streams are ready
                             for use.
  <info>int|null</info>    <strong>$microseconds</strong>  See <strong>$seconds</strong> description.

<comment>Return:</comment>
  <info>int|false</info>  On success <strong>stream_select()</strong> returns the number of stream resources contained in the
             modified arrays, which may be zero if the timeout expires before anything interesting
             happens. On error <info>false</info> is returned and a warning raised (this can happen if the system
             call is interrupted by an incoming signal).

<comment>See Also:</comment>
   * <strong>stream_set_blocking()</strong>


id: stream_set_blocking
type: function
doc:
<comment>Description:</comment>
  为资源流设置阻塞或者阻塞模式
  
  为 <strong>$stream</strong> 设置阻塞或者非阻塞模式。
  
  此函数适用于支持非阻塞模式的任何资源流（常规文件，套接字资源流等）。

<comment>Param:</comment>
  <info>resource</info>  <strong>$stream</strong>  资源流。
  <info>bool</info>      <strong>$enable</strong>  如果 <strong>$enable</strong> 为 <info>false</info>，资源流将会被转换为非阻塞模式；如果是 <info>true</info>，资源流将会被
                     转换为阻塞模式。 该参数的设置将会影响到像 <strong>fgets()</strong> 和 <strong>fread()</strong> 这样的函数从资源流
                     里读取数据。 在非阻塞模式下，调用 <strong>fgets()</strong> 总是会立即返回；而在阻塞模式下，将会
                     一直等到从资源流里面获取到数据才能返回。

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>stream_select()</strong>


id: stream_set_chunk_size
type: function
doc:
<comment>Description:</comment>
  设置资源流区块大小
  
  设置资源流区块大小。

<comment>Param:</comment>
  <info>resource</info>  <strong>$stream</strong>  目标资源流。
  <info>int</info>       <strong>$size</strong>    想设置的新的区块大小。

<comment>Return:</comment>
  <info>int</info>  成功的情况下返回资源流之前的区块大小。


id: stream_set_read_buffer
type: function
doc:
<comment>Description:</comment>
  Set read file buffering on the given stream
  
  Sets the read buffer. It's the equivalent of <strong>stream_set_write_buffer()</strong>, but for read operations.

<comment>Param:</comment>
  <info>resource</info>  <strong>$stream</strong>  The file pointer.
  <info>int</info>       <strong>$size</strong>    The number of bytes to buffer. If <strong>$size</strong> is 0 then read operations are
                     unbuffered.  This ensures that all reads with <strong>fread()</strong> are completed before
                     other processes are allowed to read from that input stream.

<comment>Return:</comment>
  <info>int</info>  Returns 0 on success, or another value if the request cannot be honored.

<comment>See Also:</comment>
   * <strong>stream_set_write_buffer()</strong>


id: stream_set_timeout
type: function
doc:
<comment>Description:</comment>
  Set timeout period on a stream
  
  Sets the timeout value on <strong>$stream</strong>, expressed in the sum of <strong>$seconds</strong> and <strong>$microseconds</strong>.
  
  When the stream times out, the 'timed_out' key of the array returned by <strong>stream_get_meta_data()</strong> is
  set to <info>true</info>, although no error/warning is generated.

<comment>Param:</comment>
  <info>resource</info>  <strong>$stream</strong>        The target stream.
  <info>int</info>       <strong>$seconds</strong>       The seconds part of the timeout to be set.
  <info>int</info>       <strong>$microseconds</strong>  The microseconds part of the timeout to be set.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>fsockopen()</strong>
   * <strong>fopen()</strong>


id: stream_set_write_buffer
type: function
doc:
<comment>Description:</comment>
  Sets write file buffering on the given stream
  
  Sets the buffering for write operations on the given <strong>$stream</strong> to <strong>$size</strong> bytes.

<comment>Param:</comment>
  <info>resource</info>  <strong>$stream</strong>  The file pointer.
  <info>int</info>       <strong>$size</strong>    The number of bytes to buffer. If <strong>$size</strong> is 0 then write operations are
                     unbuffered.  This ensures that all writes with <strong>fwrite()</strong> are completed before
                     other processes are allowed to write to that output stream.

<comment>Return:</comment>
  <info>int</info>  Returns 0 on success, or another value if the request cannot be honored.

<comment>See Also:</comment>
   * <strong>fopen()</strong>
   * <strong>fwrite()</strong>


id: stream_socket_accept
type: function
doc:
<comment>Description:</comment>
  接受由 stream_socket_server 创建的套接字连接
  
  接受由 <strong>stream_socket_server()</strong> 创建的套接字连接。

<comment>Param:</comment>
  <info>resource</info>    <strong>$socket</strong>     需要接受的服务器创建的套接字连接。
  <info>float|null</info>  <strong>$timeout</strong>    覆盖默认的套接字接受的超时时限。输入的时间需以秒为单位。默认情况下，使用
                          default_socket_timeout 作为超时时限。
  <info>string</info>      <strong>$peer_name</strong>  如果已选的传输器存在且有效的已连接客户端，则将该值设置为已连接客户端名称
                          （地址）。
                          
                          也可以之后通过 <strong>stream_socket_get_name()</strong> 来确定。

<comment>Return:</comment>
  <info>resource|false</info>  返回接受套接之后的资源流  或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>stream_socket_server()</strong>
   * <strong>stream_socket_get_name()</strong>
   * <strong>stream_set_blocking()</strong>
   * <strong>stream_set_timeout()</strong>
   * <strong>fgets()</strong>
   * <strong>fgetss()</strong>
   * <strong>fwrite()</strong>
   * <strong>fclose()</strong>
   * <strong>feof()</strong>
   * 


