PHP优化这是正确的吗?

Posted

技术标签:

【中文标题】PHP优化这是正确的吗?【英文标题】:PHP Optimisation is this correct? 【发布时间】:2011-08-08 23:25:10 【问题描述】:

我一直在创建一个 php 应用程序,该应用程序对数据库进行很多 查询 我会说大约每个页面加载大约 30 个左右。由于应用程序的性质,这是必需的。我正在使用 OOP php 技术并尽可能地优化我的查询。我应该使用某种缓存系统吗?或者你会说 30 可以吗?这是一个典型的查询。

好的,我的__construct 看起来像这样:

public function __construct($host = 'localhost', $user = 'root', $pass = 'root', $name = 'advert') 
       
        $this->_conn = new mysqli($host, $user, $pass, $name)
            or trigger_error('Unable to connect to the server, please check your credentials.', E_USER_ERROR);
    

还有一种方法。

$sql = "SELECT `advert_id`,
                        `ad_title`,
                        `ad_image` FROM adverts WHERE UNIX_TIMESTAMP() < `ad_expires` AND `ad_show` = 0 AND `ad_enabled` = 1 ORDER BY `ad_id` DESC LIMIT 1";

        $stmt = $this->_conn->prepare($sql);
        if ($stmt) 
            $stmt->execute();
            $stmt->bind_result($ad_id, $ad_title, $ad_image);
            $rows = array();
            while ($row = $stmt->fetch()) 
                $item = array(
                    'ad_id' => $ad_id,
                    'ad_title' => $ad_title,
                    'ad_image' => $ad_image
                );
                $rows[] = $item;
            

这个应用程序自始至终都是这样的。

感谢任何反馈。

**编辑对不起,我的意思是说 30 个查询而不是 30 个连接

【问题讨论】:

不要为每个对象使用新的连接。这是荒谬的。使用共享数据库对象。就个人而言,我经常根据项目将我的存储在$GLOBALS,但还有其他方法可以做到。 30 个 queries 很好,30 个 connections 不是。除非您连接到 30 个不同的数据库。 哦,不,我在阅读结束之前对布拉德的评论投了赞成票。在$GLOBAL,真的吗?这比每页 30 个连接更可笑。 如果您使用的是 $GlOBALS,那么您做错了。研究使用依赖注入。 您期待什么样的用途?每页 30 个查询听起来确实很多,但在部门网站上,这可能不是问题。如果您预计每小时有一百万次点击,那可能很多。缓存可以提供帮助,但它也将取决于您缓存的内容。如果每个人都在每个查询中寻找独特的数据,那将没有多大帮助。 【参考方案1】:

你应该在有用的时候使用缓存。如果没有缓存查询的页面生成时间是 3 秒,并且有缓存 - 0.03,那么您显然应该使用缓存。如果缓存没有带来任何明显的提升 - 不要花费资源。

【讨论】:

【参考方案2】:

只需建立一个连接并重新使用它。考虑到您可能有多个用户,30 个连接已经很多了。

编辑:最初的问题说连接。除非这是不经常更改的数据,否则 30 次查询就可以了。在这种情况下,您可以先查询一下是否需要拉取数据,或者缓存的数据是否可以提供给用户。

【讨论】:

对不起,我的意思是说 30 个查询只建立了 1 个连接。

以上是关于PHP优化这是正确的吗?的主要内容,如果未能解决你的问题,请参考以下文章

PHP性能优化简述

这是为了防止使用 PHP 和 Ajax 的 CSRF 所需要做的吗?

所有 PHP 相等比较都是对称的吗?

SQL PHP 语法错误优化

PHP性能之语言性能优化

php 这是与Post模型的ManyToMany关系的优化标签,用于附加不存在的标签。