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的方法.按照文档上的说法,此方法可以提高请求的处理速度,如果有些处理可以在页面生成完后再进行,就可以使用这个方法.
    <?php

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

    /* 记录日志 */
    file_put_contents('log.txt', '依然可以输入日志');
    ?>
    <?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);

    ?>
    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() 函数解析一个配置文件,并以数组的形式返回其中的设置。

"test.ini" 的内容:
[names]
me = Robert
you = Peter

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

PHP 代码:

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

输出:

Array
(
[me] => Robert
[you] => Peter
[first] => http://www.example.com
[second] => http://www.w3school.com.cn
)

php代码

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

输出:

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 — 为一个类创建别名

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

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

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