2009-10-31 106 views
0

我有一個小腳本,並希望從管理頁腳中檢測腳本版本。在管理footer.php我把這個代碼。PHP - 如何檢查腳本版本

<?php 
    define('VERSION', '1.0'); 
    $fp = fopen("http://v.domain.com/version.txt", "r"); 
    while ($line = fgets($fp)) { 
     $line; 
     if (VERSION != $line) { 
?> 
<div id="upgrade"> 
<a href="http://domain.com/download/" target="_blank">Download a new version [<?php echo $line; ?>]</a> 
</div> 
<?php 
     } 
    } 
?> 

在version.txt中只有1.0.1和工作正常來比較版本。

問題來了,客戶端網站會變慢。如何解決這個問題?

回答

5

它之所以慢是因爲服務器上運行PHP代碼有打v.domain。 com通過HTTP並下載version.txt的副本。發生這種情況時,PHP正坐在那裏等着它。

爲什麼這會讓您的整個頁面變慢,即使它在頁腳中?因爲Apache在把它吐出到瀏覽器之前會緩存PHP頁面的輸出。即使你刷新輸出緩衝區,有時瀏覽器也會這樣做,這是你無法控制的。

這聽起來像是你想發佈一些基於PHP的工具,並且在頁腳中有一個自動版本檢查,對嗎?

如果是這樣,有幾個問題做你正在做的方式:

  1. 有沒有需要檢查每一次你的頁面加載的版本。保存您在某處查看的最後日期,並且僅在___天后再次檢查。 (希望你已經這樣做了,只是爲了簡單而從示例中刪除它)

  2. 從另一臺服務器上這樣讀取文件是個壞主意。正如您現在遇到的情況,如果您的v.domain.com變得忙碌,它可能會導致速度放慢。如果發生故障,那麼您的PHP將花費更長時間,因爲它正在等待超時。

更好的方法是通過Javascript。加載頁面後,您將擁有一個使用AJAX的JavaScript函數。如果您對Javascript不熟悉,但可能有一點學習曲線,但這是處理您的情況的理想方式。

+1

我只會偶爾下載文件(每個'x'天,正如DOOManiac所說的)。這樣可以避免依賴於JavaScript,因爲儘管你可能會想,但許多客戶端不會擁有JavaScript(手機,文本瀏覽器(是的,它們仍然被使用),自動化工具)。而且只能在預定作業中下載,以免影響用戶。 – 2009-10-31 03:41:37

+0

已被接受。我只是打電話一次,並存儲到當前版本的數據庫,然後每隔x天比較一次。 :) – wow 2009-10-31 20:55:51

2

如果該文件只是版本號,那麼我會建議嘗試:

file_get_contents()

$version = file_get_contents('http://wwww.example.com'); 
if (VERSION != trim($version)) { 
} 
+0

我更喜歡file_get_contents。 – ChronoFish 2009-10-31 02:37:01

+0

但這並不是它發展緩慢的原因。 – 2009-10-31 03:36:56

+0

是的..很簡單.. – wow 2009-10-31 20:54:21