2015-10-21 103 views
0

我正在建立一個新聞網站,用php編寫。根據網站上的一些信息,網站上的網頁需要自動更新內容。我的想法是創建一個.txt文件,它將包含所有這些信息,所以我可以通過php訪問它並修改網站上的頁面。當用戶加載站點時,PHP腳本運行並將整個文件讀取到一個字符串中,將其拆分兩次,然後使用這些字符串。但是,可能的問題是,這個.txt文件可能非常大(如10mb),並且流量很大,每次用戶加載一個頁面時讀取這個大文件可能是個壞主意,所以我可能需要更快更好的東西。可能的解決方案是MySQL數據庫,但它會有很大的不同?另外,有沒有一些技巧來優化使用PHP的網站性能?網站優化 - 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> 

回答

0

如果你有數據的10MB需要對每個頁面都可用,我建議將這些數據放在RAM中,而不是從任何基於磁盤的數據源加載。儘管MySQL可能會將數據緩存在RAM中,但是從MySQL中檢索和格式化數據比將處理後的數據保存在PHP中要慢。

有關如何共享內存的信息,請參閱Reading and writing global variables across scripts in PHP

0

我覺得對於使用數據庫來存儲和檢索數據的情況下已經作出。一個文本文件只會讓你目前爲止 - 可能只對非常小的任務有用。我會推薦閱讀一本書或者在網上找到一份好的教程,以瞭解如何在PHP應用程序中正確使用MySQL。 MySQL是免費的,但根據您的需要,您可能需要將其託管在某個在線的地方。

一旦您瞭解了基本知識,就可以使用各種策略來加快查詢速度。例如,您可以使用單個查詢拉下比您需要的多得多的內容,然後使用PHP來整理結果。調用數據庫服務器往往需要比CPU週期更多的時間。