【问题标题】:Should I not call a method multiple times if I don't have to?如果不需要,我不应该多次调用一个方法吗?
【发布时间】:2010-12-29 21:32:02
【问题描述】:

我目前使用的会话非常繁重,我现在正在重新编码我的网站。我所做的一件事是创建了一个会话类,它有一些简单的方法,例如这里是我如何使用我的类检索会话数据。

$session = new Session();

// to set a session I would use this
echo $session->set('user_id');

// to view a session's data
echo $session->get('user_id');

现在这与以常规方式设置查看会话变量基本相同,只是我通过此会话类运行它,我的目的是使其更加灵活。我想如果所有会话数据都在一个大站点上通过该类运行,那么我所要做的就是更改它的源以使用缓存或内存缓存或数据库,只需更改会话类文件。

所以实际上,我目前在为我的会话数据使用类/方法方面确实没有太多收获,但有一天我可能会这样做。

我的问题是,在一个流量非常大的网站上,每次我需要显示会话数据时不要进行额外的方法/类调用会更好吗?

【问题讨论】:

    标签: php class session


    【解决方案1】:

    不要过早优化。您可能会遇到效率低下或算法问题,每次花费几秒钟,所以不要担心在这里或那里节省一毫秒。

    【讨论】:

    • 有时我的女朋友指责我过早优化。 :)
    • 我知道这通常是这种情况,而且我还有更多工作要做,但我已经对这个网站进行编码和优化超过 2 年,每一毫秒都会增加高流量环境。不过,我目前正在重新编写我的大部分工作,并且我听说函数调用确实会稍微损害性能,但我是使用类/方法的新手,所以我不确定类的一般性能。感谢您的提示
    【解决方案2】:

    您使用的模式在多个框架中都有体现,其中一个是我个人使用的框架 Zend Framework。

    关于优化的 cmets 是正确的,您正在执行的会话内容的性能影响可能非常小,以至于最终无关紧要。拥有会话类可以为您提供许多好处,并且与通过函数进行简单会话访问相比,会话对象的框架常用框架应该清楚地表明这一点。

    问候,

    【讨论】:

      【解决方案3】:

      你很好。您希望对可以在请求生命周期内缓存的数据使用静态或其他一些持久变量,但通常在高性能站点上,后端代码通常不是您需要担心的事情。

      查看this article 了解我对后端性能的看法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-06-30
        • 1970-01-01
        • 1970-01-01
        • 2012-01-24
        • 2014-08-18
        • 2014-04-02
        • 1970-01-01
        相关资源
        最近更新 更多