【问题标题】:Site optimization - PHP and memory usage + database?网站优化 - PHP 和内存使用 + 数据库?
【发布时间】:2015-11-07 19:17:06
【问题描述】:

我正在建立一个用 php 编写的新闻站点。根据网站上的某些信息,网站上的页面具有需要自动更新的内容。我的想法是创建一个包含所有这些信息的 .txt 文件,这样我就可以通过 php 访问它并修改网站上的页面。当用户加载站点时,PHP 脚本运行并将整个文件读入一个字符串,将其拆分两次,然后使用该字符串。但是,可能的问题是这个 .txt 文件可能非常大(比如 10mb)并且流量很大,每次用户加载页面时读取这么大的文件可能是个坏主意,所以我可能需要更快更好的东西.可能的解决方案是 mysql 数据库,但它会有很大的不同吗?另外,是否有一些技巧可以使用 PHP 优化网站性能?

注意:这是读取文件的脚本:

 <?php
$myfile = fopen("postovi.txt", "r") or die("Unable to open file!");
$smejanje = fread($myfile,filesize("postovi.txt"));
$postovi= explode("<novipost>", $smejanje);

$i = 0;
        $duzina = sizeof($postovi);
        while ($i < $duzina) //duzina = broj postova <ucitava sve postove>
        {
            $postovi[$i] = explode("|", $postovi[$i]);
            $i++;       
        }   

fclose($myfile);

这里是要使用该文件中的信息更新的 html 元素:

<?php $id++; ?>
        <div class="mali-post-h">
        <a href="<?php echo($postovi[$id][0]); ?>" id="<?php echo("mali-post-link-".$id); ?>">  
        <div class="mali-post" style="background-image: url(<?php echo $postovi[$id][3]; ?>);" id="<?php echo("mali-post-".$id); ?>">
        <div class="mali-post-naslov">
        <p id="<?php echo("mali-post-naslov-".$id); ?>" class="customfont"><?php echo $postovi[$id][2]; ?></p>
        <p style="font-size:10px"> <span style="font-weight: 900; font-size:15px; color: #3366FF;"> <?php echo $znak ?>  </span> <?php 
        $time = strtotime($postovi[$id][4]);
        echo ' pre '.humanTiming($time); ?> </p>
        </div>
        </div>
        </a>
        </div>

【问题讨论】:

    标签: php optimization


    【解决方案1】:

    如果您需要为每个页面提供 10MB 的数据,我建议将这些数据放在 RAM 中,而不是从任何基于磁盘的数据源加载。虽然 MySQL 可能会将数据缓存在 RAM 中,但从 MySQL 检索和格式化数据比仅将处理后的数据保存在 PHP 中要慢。

    有关如何共享内存的信息,请参阅Reading and writing global variables across scripts in PHP

    【讨论】:

      【解决方案2】:

      我觉得使用数据库存储和检索数据的案例已经有了。一个文本文件只会让你到目前为止 - 可能只对非常非常小的任务有用。我建议您阅读一本书或在线查找一个好的教程,以了解如何在您的 PHP 应用程序中正确使用 MySQL。 MySQL 是免费的,但根据您的需要,您可能需要将它托管在在线某个地方。

      学习了基础知识后,您可以采用各种策略来加快查询速度。例如,您可以通过单个查询获取比您需要的更多的内容,然后使用 PHP 对结果进行排序。对数据库服务器的调用往往比 CPU 周期花费更多的时间。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-01-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-23
        • 2012-01-16
        • 1970-01-01
        相关资源
        最近更新 更多