网站优化 - PHP和内存使用+数据库?

时间:2015-10-21 16:09:52

标签: php optimization

我正在建立一个用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>

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

一旦掌握了基础知识,就可以采用各种策略来加快查询速度。例如,您可以使用单个查询提取比您需要的更多的内容,然后使用PHP来整理结果。调用数据库服务器往往比CPU周期花费更多时间。