php - PHP 中的对象 : More or Less is better?

标签 php mysql datetime object

我之前问过 aqbout 时区和日期/时间,但这是一个更具体的问题,更多关于 PHP 中的对象。

<?PHP
//set the user's time zone on page load
date_default_timezone_set("America/Los_Angeles");

//convert the timestamp from DB into the user's time
$timestamp = '2008-05-01 13:44:19'; //this would normally be returned from mysql
echo ConvertDateTime($timestamp, "America/Los_Angeles");

//here is the function to convert it
function ConvertDateTime($timeString, $timeZone)
{
    if ( $d = new DateTime($timeString) ) {
        $d-&gt;setTimeZone(new DateTimeZone($timeZone));
        return $d-&gt;format("Y-m-d H:i:s");
    }
    return null;
}
?>

好吧,这对某些人来说可能是一个愚蠢的问题,但我真的对类和对象了解不多或没有太多经验,通常在一个页面上,例如我将创建 1 个数据库对象并在其上运行每个 mysql 查询具有该 1 个对象集的页面。我总是认为更少的对象可能更好,但我在这个网站上读到,与 1 个对象相比,拥有数百个对象的速度和使用的资源相同,不确定这是否属实。

我的问题是,在上面的函数中,您可以看到每次调用函数时都会创建一个新的 DateTime 对象,在我的情况下,在某些页面上可能会创建 100 次。那么我应该像使用 singleton 一样使用,甚至我可以在设置数据库对象的 header 中设置 1 次 dattim 对象,还是应该让函数创建大量对象?

请解释一下优点和缺点以及我可能应该做的事情,感谢任何建议,有些人可能会说我正在预优化,好吧,我已经优化当前网站两年多了,以达到我想要的效果,现在我正在重建同一个网站,所以我知道预期的用户负载和内容,我宁愿现在而不是稍后修复类似的问题。

最佳答案

should I use like a singlton

单例并非没有问题——例如,它们常常使(自动化)测试变得困难。这是它们较少受到“大”框架欢迎的原因之一(我正在考虑 Zend Framework 和 Symfony,它们正在减少下一个主要版本的单例数量)


I could set a dattim object 1 time in the header

使用全局变量/对象也会产生副作用;如果一个变量意味着“本地”,那么它应该是本地的——代码的可读性和理解它的能力通常比毫秒的一小部分更重要。


对于极端和特定的情况,唯一的解决方案是分析:您希望您的脚本/应用程序运行得更快吗?使用更少的CPU?

那么,首先,对其进行概要分析!它将帮助识别瓶颈,并向您展示应该集中精力的内容。

很可能您有很多可以最快优化的东西(即需要更少的时间来思考、编码和测试),并且会给您带来更高的性能提升。 p>


最后,你总是必须做出选择:

  • 尽可能最好的表演
  • 开发/优化某些内容所需的时间
  • 维护它需要时间;包括除您之外的其他人。

而且,通常情况下,一台新的、更强大的服务器(或第二台)最终花费不到几周的时间进行优化,只获得 5% 的效果!

(注意我并没有说你不应该优化;但你不应该过度优化。)

关于php - PHP 中的对象 : More or Less is better?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2002313/

相关文章:

php - fatal error : Uncaught SoapFault exception: [Client] SOAP-ERROR: Encoding: object hasn't 'source' property in

php - 从表到表的复杂 MySQL 获取关系和条件

python-2.7 - Bokeh 字形坐标 x_axis_type 'datetime'

SQL 查询选择两个日期之间的日期

php - 安装 curl 扩展后 php 停止工作

javascript - Chart.js 图表从未生成

php - 如何替换/加速使用 LIKE 的文本搜索查询?

mysql update datetime column - 添加10年3月22日10小时30分钟到现有数据

javascript - Javascript 中的 Date.now 和 Date.getTime 有什么区别以及时区如何影响它们?

php - Jquery (Datatables) 功能没有完全初始化? PHP/MySQL