phpphpPhp 内置函数方法使用(2)
Alex
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
|