ignore_user_abort() ,可以实现当客户端关闭后仍然可以执行PHP代码,可保持PHP进程一直在执行,可实现所谓的计划任务功能与持续进程,只需要开启执行脚本,除非 apache等服务器重启或有脚本有输出,该PHP脚本将一直处于执行的状态;
<?php
//如果设置为 TRUE,则忽略与用户的断开(脚本将继续运行)。默认情况下是设置为 FALSE,与客户机断开会导致脚本停止运行。
ignore_user_abort(); //输出当前设置
connection_aborted() - 检查客户端是否已经断开
connection_status() - 返回连接的状态位
关于PHP连接处理的完整描述:https://www.php.net/manual/zh/features.connection-handling.php
资料来源
参考:https://www.php.net/manual/zh/book.misc.php(PHP杂项函数)
心得
在调用Flush系列函数之前任何输出方式都将会被缓存到内存,只有调用了Flush函数之后才会发送给浏览器;
ob_start(callable $output_callback = null, int $chunk_size = 0, int $flags = PHP_OUTPUT_HANDLER_STDFLAGS): bool
此函数将打开输出缓冲。当输出缓冲激活后,脚本将不会输出内容(除http标头外),相反需要输出的内容被存储在内部缓冲区中。
内部缓冲区的内容可以用 ob_get_contents() 函数复制到一个字符串变量中。 想要输出存储在内部缓冲区中的内容,可以使用 ob_end_flush() 函数。另外, 使用 ob_end_clean() 函数会静默丢弃掉缓冲区的内容。
提示
输出缓冲区是可堆叠的,这即意谓着,当有一个 ob_start() 是活跃的时, 你可以调用另一个 ob_start() 。 只要确保又正确调用了 ob_end_flush() 恰当的次数即可。 如果有多重输出回调函数是活跃的,输出内容会一直按嵌套的顺序依次通过它们而被过滤。
parse_str() 函数把查询字符串解析到变量中。 parse_str(string,array); parse_str(\"name=Peter&age=43\",$myArray);
注释:如果未设置 array 参数,由该函数设置的变量将覆盖已存在的同名变量。 注释:php.ini 文件中的 magic_quotes_gpc 设置影响该函数的输出。如果已启用,那么在 parse_str() 解析之前,变量会被 addslashes() 转换。
date_parse(date);
date_parse() 函数返回一个包含指定日的详细信息的关联数组。 date 必需。规定日期(格式由 strtotime() 接受)。
返回值: 如果成功则返回包含被解析日期信息的关联数组,如果失败则返回 FALSE。
date_parse_from_format(format,date); //指定格式转换时间字符串,返回关联数组 date_create_from_format(format,time,timezone); //指定格式转换,返回DateTime对象
parse_ini_file() 函数解析一个配置文件(ini 文件),并以数组的形式返回其中的设置。 parse_ini_file(file,process_sections)
提示
该函数可以用来读取您自己的应用程序的配置文件,与 php.ini 文件没有关系。有些保留字不能作为 ini 文件中的键名,包括:null、yes、no、true 和 false。字符 {}|&~![()\" 也不能用在键名的任何地方。
PHP 过滤器用于验证和过滤来自非安全来源的数据,比如用户的输入。 测试、验证和过滤用户输入或自定义数据是任何 Web 应用程序的重要组成部分。 PHP 的过滤器扩展的设计目的是使数据过滤更轻松快捷。 几乎所有的 Web 应用程序都依赖外部的输入。这些数据通常来自用户或其他应用程序(比如 web 服务)。通过使用过滤器,您能够确保应用程序获得正确的输入类型。 您应该始终对外部数据进行过滤!
输入过滤是最重要的应用程序安全课题之一。
详细:https://www.runoob.com/php/php-filter.html
PHP EOF(heredoc)是一种在命令行shell(如sh、csh、ksh、bash、PowerShell和zsh)和程序语言(像Perl、PHP、Python和Ruby)里定义一个字符串的方法。
iconv()将字符串按要求的字符编码来转换 iconv(stringin_charset,stringout_charset,stringstr):string 将字符串str从in_charset转换编码到
语法:version_compare ( string version1 , string version2 [, string
生成器函数看起来像普通函数——不同的是普通函数返回一个值,而生成器可以 yield 生成多个想要的值。 任何包含 yield 的函数都是一个生成器函数。
当一个生成器被调用的时候,它返回一个可以被遍历的对象.当你遍历这个对象的时候(例如通过一个foreach循环),PHP 将会在每次需要值的时候调用对象的遍历方法,并在产生一个值之后保存生成器的状态,这样它就可以在需要产生下一个值的时候恢复调用状态。
一旦不再需要产生更多的值,生成器可以简单退出,而调用生成器的代码还可以继续执行,就像一个数组已经被遍历完了。
生成器函数的核心是yield关键字。它最简单的调用形式看起来像一个return申明,不同之处在于普通return会返回值并终止函数的执行,而yield会返回一个值给循环调用此生成器的代码并且只是暂停执行生成器函数。
parse_url(string url, int component = -1): mixed
本函数解析一个 URL 并返回一个关联数组,包含在 URL 中出现的各种组成部分。
本函数不是用来验证给定 URL 的合法性的,只是将其分解为下面列出的部分。不完整的 URL 也被接受,parse_url() 会尝试尽量正确地将其解析
如果省略了 component 参数,将返回一个关联数组 array,在目前至少会有一个元素在该数组中。如果指定了 component 参数, parse_url() 返回一个 string (或在指定为 PHP_URL_PORT 时返回一个 integer)而不是 array。如果 URL 中指定的组成部分不存在,将会返回 null。
spl_autoload_register(callable $autoload_function = ?, bool $throw = true, bool $prepend = false): bool
spl_autoload_register — 注册给定的函数作为 __autoload 的实现 (PHP 5 >= 5.1.0, PHP 7, PHP 8)
__autoload — 尝试加载未定义的类,本函数已自 PHP 7.2.0 起被废弃,并自 PHP 8.0.0 起被移除。 强烈建议不要依赖本函数。由spl_autoload_register 代替
<?php
function my_autoloader($class) {
include \'classes/\' . $class . \'.class.php\';
}
spl_autoload_register(\'my_autoloader\');
spl_autoload_register(
function ($class) {
include \'classes/\' . $class . \'.class.php\';
}
);
// 或者,自 PHP 5.3.0 起可以使用一个匿名函数
str_rot13() 函数对字符串执行 ROT13 编码。
ROT13 编码把每一个字母在字母表中向前移动 13 个字母。数字和非字母字符保持不变。
pack()函数把数据装入一个字符串。
PHP 带有很多内置 URL 风格的封装协议,可用于类似 fopen()、 copy()、 file_exists() 和 filesize() 的文件系统函数。 除了这些封装协议,还能通过 stream_wrapper_register() 来注册自定义的封装协议。
官方文档:https://www.php.net/manual/zh/function.ini-set.php
支持动态设置的配置:https://www.php.net/manual/zh/ini.list.php
extension_dir可设置为“./”代表当前的目录。
function stream_get_contents ($handle, $maxlength = null, $offset = null) false|string
与 file_get_contents() 一样,但是 stream_get_contents() 是对一个已经打开的资源流进行操作,并将其内容写入一个字符串返回。 返回的内容取决于 maxlength 字节长度和 offset 指定的起始位置。
stream_set_blocking ($resource, $flag):boolean ;
$flag 取值为0或1
stream_set_blocking是否让流阻塞,0是非阻塞,1是阻塞。
此函数适用于支持非阻塞模式的任何资源流(常规文件,套接字资源流等)。该参数的设置将会影响到像 fgets() 和 fread() 这样的函数从资源流里读取数据。 在非阻塞模式下,调用 fgets(),总是会立即返回;而在阻塞模式下,将会一直等到从资源流里面获取到数据才能返回。
array_walk、md5_file、parse_url
array_map返回一个新数组,array_walk可通过应用修改元素值