2012-09-10 75 views
0

我的網站完全依賴隨機頁面生成器,它從文本文件列表中加載頁面。該代碼由論壇上的「lserni」友善地編寫。該腳本在過去幾天內一直運行良好,並且在3天內處理了超過10萬的頁面瀏覽量!我的PHP隨機頁面生成器在100,000次點擊後停止工作

我今天注意到,但它似乎已停止正常工作。如果你是一個全新的頁面訪問者,或者你已經清除了你的互聯網緩存/ cookies等等 - 當你第一次加載頁面,它不會隨機生成一個頁面......它只是顯示一個BLANK頁面。如果您然後刷新頁面,腳本完美地工作。我無法把頭轉向它,但它現在導致了大量的流量下降!希望能幫到你:

<?php 

    session_start(); 
    if (!isset($_SESSION['urlist']))  // Do we know the user? 
     $_SESSION['urlist'] = array();  // No, start with empty list 
    if (empty($_SESSION['urlist']))  // Is the list empty? 
    { 
     $_SESSION['urlist'] = file("linklist.txt"); // Fill it. 
     $safe = array_pop($_SESSION['urlist']); 
     shuffle($_SESSION['urlist']);   // Shuffle the list 
     array_push($_SESSION['urlist'], $safe); 
    } 
    $url = trim(array_pop($_SESSION['urlist'])); 
    header("Location: $url"); 
    ?> 
+0

你能提供一個鏈接到你有這個運行的地方嗎? – Brad

+1

* linklist.txt *中的絕對第一行是什麼?該行始終是第一個使用的網址。 –

+0

Emil:第一行的鏈接完美運行,所以這不是問題。 布拉德:我很想提供一個鏈接,但內容是NSFW,我不想從這個網站中刪除!如果我被允許發佈,那麼我會的。我真的不明白髮生了什麼問題,但這非常令人沮喪。我最近在網站上更改的內容是添加Twitter和Facebook社交按鈕,但這些按鈕位於linklist.txt中的頁面上。 index.php隨機頁面生成器(我粘貼的代碼)沒有任何改變。 – JamesBriggs

回答

2

如果沒有會話數據,它實際上是文件中最先使用的項目。

{ 
    $safe = array_pop($_SESSION['urlist']); // gets item at the END of the array 
    shuffle($_SESSION['urlist']); 
    array_push($_SESSION['urlist'], $safe); // puts item at the END of the array 
} 
$url = trim(array_pop($_SESSION['urlist']));// gets item at the END of the array 

所以如果你在文本文件末尾引入換行符,它可能是你的問題。

+0

你是一個天才。對此感激不盡。在添加最後一頁之後,我必須在文本文件中輸入,這會將空行放在那裏!謝謝你tigrang。 – JamesBriggs

+0

沒問題。你可能想使用'file('linklist.txt',FILE_SKIP_EMPTY_LINES | FILE_IGNORE_NEW_LINES);'以避免將來發生。 – tigrang

0

我建議,在header調用後,添加一些HTML,說明該用戶被重定向到。沒有人會看到它,但它可以幫助診斷用戶爲什麼得到空白頁面。