一个PHP的小技巧

如何实现一个耗时的函数或者类的方法多次调用时, 第一次进行运算, 以后再调用这个函数时, 直接返回结果?

<?php 

class MyDate
{
    public static function getCurrentDate()
    {
        static $current_date = '';

        if (!$current_date) {
            echo 'only run one time';
            usleep(200000);
            $current_date  = date('Y-m-d H:i:s');
        }

        return $current_date;
    }

    public static function getCurrentDate2()
    {
        usleep(200000);
        echo 'run everytime';
        return date('Y-m-d H:i:s');
    }
}

$start = microtime(true);
$i = 5;
while ($i--) {
    MyDate::getCurrentDate();
}
echo microtime(true) - $start;    //200ms

$start = microtime(true);
$i = 5;
while ($i--) {
    MyDate::getCurrentDate2();
}
echo microtime(true) - $start;    //1s

一个小技巧能提高不少性能

相关推荐