Php 内置函数方法使用(2)

php 内置函数方法使用(2)

  • fastcgi_finish_request
  • putenv
  • parse_ini_file()
  • spl_autoload_unregister
  • class_alias

使用fastcgi_finish_request提高页面响应速度

当PHP运行在FastCGI模式时,PHP FPM提供了一个名为fastcgi_finish_request的方法.按照文档上的说法,此方法可以提高请求的处理速度,如果有些处理可以在页面生成完后再进行,就可以使用这个方法.
1
2
3
4
5
6
7
8
<?php

echo '例子:';
fastcgi_finish_request(); /* 响应完成, 关闭连接 */

/* 记录日志 */
file_put_contents('log.txt', '依然可以输入日志');
?>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php

echo '例子:';

file_put_contents('log.txt', date('Y-m-d H:i:s') . " 上传视频\n", FILE_APPEND);

fastcgi_finish_request();

sleep(1);
file_put_contents('log.txt', date('Y-m-d H:i:s') . " 转换格式\n", FILE_APPEND);

sleep(1);
file_put_contents('log.txt', date('Y-m-d H:i:s') . " 提取图片\n", FILE_APPEND);

?>
1
2
3
4
if (!function_exists("fastcgi_finish_request")) {
function fastcgi_finish_request() {
}
}

putenv

putenv — 设置环境变量的值

添加 setting 到服务器环境变量。 环境变量仅存活于当前请求期间。 在请求结束时环境会恢复到初始状态。

设置特定的环境变量也有可能是一个潜在的安全漏洞。 safe_mode_allowed_env_vars 包含了一个以逗号分隔的前缀列表。 在安全模式下,用户可以仅能修改用该指令设定的前缀名称的指令。 默认情况下,用户仅能够修改以 PHP_ 开头的环境变量(例如 PHP_FOO=BAR)。 注意:如果此指令是空的,PHP允许用户设定任意环境变量!

safe_mode_protected_env_vars 指令包含了逗号分隔的环境变量列表,使用户最终无法通过 putenv() 修改。 即使 safe_mode_allowed_env_vars 设置允许修改,这些变量也会被保护。

parse_ini_file() 函数

parse_ini_file() 函数解析一个配置文件,并以数组的形式返回其中的设置。

1
2
3
4
5
6
7
8
"test.ini" 的内容:
[names]
me = Robert
you = Peter

[urls]
first = "http://www.example.com"
second = "http://www.w3school.com.cn"

PHP 代码:

1
2
3
<?php
print_r(parse_ini_file("test.ini"));
?>

输出:

1
2
3
4
5
6
7
Array
(
[me] => Robert
[you] => Peter
[first] => http://www.example.com
[second] => http://www.w3school.com.cn
)

php代码

1
2
3
<?php
print_r(parse_ini_file("test.ini",true));
?>

输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
Array
(
[names] => Array
(
[me] => Robert
[you] => Peter
)
[urls] => Array
(
[first] => http://www.example.com
[second] => http://www.w3school.com.cn
)
)

spl_autoload_unregister 注销已注册的__autoload()函数

 从spl提供的自动装载函数栈中注销某一函数。如果该函数栈处于激活状态,并且在给定函数注销后该栈变为空,则该函数栈将会变为无效。

如果该函数注销后使得自动装载函数栈无效,即使存在有__autoload函数它也不会自动激活

class_alias — 为一个类创建别名

1
bool class_alias ( string $original , string $alias [, bool $autoload = TRUE ] )

基于用户定义的类 original 创建别名 alias。 这个别名类和原有的类完全相同。
实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class foo { }

class_alias('foo', 'bar'); //给类创建别名

$a = new foo;
$b = new bar;

// the objects are the same
var_dump($a == $b, $a === $b); //true
var_dump($a instanceof $b); //false

// the classes are the same
var_dump($a instanceof foo); //true
var_dump($a instanceof bar); //true

var_dump($b instanceof foo); //true
var_dump($b instanceof bar); //true