php - 这些功能是否可以减少服务器负载?

时间:2011-10-04 20:44:35

标签: php load reduce

晚上好,
我将这些five functions用于reduce server load
    

// unset all vars
function unset_all_vars()
{
    $vars = func_get_args();
    foreach($vars[0] as $key => $val)
    {
        unset($GLOBALS[$key]);
    }
    return serialize($vars[0]);
} 
unset_all_vars(get_defined_vars()); 

// unset all const
function unset_all_const()
{
    $vars =  func_get_args();
    foreach($vars[0] as $key => $val)
    {
        unset($key);
    }
    return serialize($vars[0]);
} 
unset_all_const(get_defined_constants()); 

// unset all functions
function unset_all_functions()
{
    $vars =  func_get_args();
    foreach($vars[0] as $key => $val)
    {
        unset($key);
    }
    return serialize($vars[0]);
} 
unset_all_functions(get_defined_functions()); 

// unset all classes
function unset_all_classes()
{
    $vars =  func_get_args();
    foreach($vars[0] as $x => $v)
    {
        unset($x);
    }
    return serialize($vars[0]);
} 
unset_all_classes(get_declared_classes()); 

// unset all interfaces
function unset_all_interfaces()
{
    $vars =  func_get_args();
    foreach($vars[0] as $x => $v)
    {
        unset($x);
    }
    return serialize($vars[0]);
} 
unset_all_interfaces(get_declared_interfaces());

?>

功能1取消设置所有变量 功能2取消所有常数 功能3取消所有功能
功能4取消所有班级 功能5取消设置所有接口

他们好吗? 它们还有其他一些功能better than吗?还是additional to他们?

2 个答案:

答案 0 :(得分:5)

为什么要使用这样的功能呢?即使它们可以工作,PHP脚本最多只运行一秒钟,之后它将清除它已分配的所有内容。在中间释放内容对于运行很长时间并分配很多不再需要的资源的脚本特别有用,但对于主要使用PHP的网页来说,这是非常罕见的。

命名也是错误的,因为它们不会释放“所有”项目,而只会释放它们传递的项目。

答案 1 :(得分:3)

您不能unset(或更正确地,undefine)常量,函数,类或接口。您也不应该 - 它肯定不会“减少服务器负载”,即使您可以。而且我无法看到全局范围内的所有变量都没有设置产生任何真正的积极差异 - 如果你创建一个大变量并且想要释放它在使用后使用的资源然后在那时明确地做,那么取消设置所有全局变量是不太可能做任何好事,它可能会造成伤害。

除此之外,除第一个之外的所有功能都没有任何效果。在foreach中,循环期间创建的变量是原始数据的副本,而取消设置副本不会影响原始数据。

PHP是垃圾收集的,所以你不必担心这样的事情 - 阅读thisthis