2017-02-17 79 views
0

我上a testsite以下的index.php:PHP蘭特只能使用一次

<?php 
    $r = rand(1, 1000); 
    $mtr=mt_rand(1, 1000); 
    echo "rand(1, 1000): " . $r; 
    echo "<br>mt_rand(1, 1000): " . $mtr; 
?> 

出於某種原因,我只能得到它運行一次加載網頁時,給了我兩個隨機數,理所應當,也許再次如果我用F5重新加載頁面。但是直到幾分鐘後,它才拒絕產生任何隨機數字。

我覺得我失去了一些明顯的東西。該服務器由MissHosting.se託管,並運行php5.6。客戶支持堅持認爲這是一個代碼問題。我很樂意根據要求提供更多信息。

感謝您的幫助!

+4

像這樣調用'http://sithu.net/testinggrounds/?a'' http://sithu.net/testinggrounds/?ab'等等,就有一個頁面緩存在工作。 – JustOnUnderMillions

+2

查看該頁面的標題:'X-Cache-Hits:1 X-Varnish:5816388 5816386' – JustOnUnderMillions

+0

'echo {rand(1,1000)}:「。$ r;' - 因爲echo不知道它是一個函數還是一個字符串,所以你需要將它封裝在'{}'中。 – KDOT

回答

0

該問題似乎來自您的服務器使用某種緩存的事實。爲了排除客戶端緩存(即瀏覽器緩存),我使用curl多次請求該頁面,該緩存不進行任何緩存。所以它是一個服務器緩存。

現在,如果我們看一下頭,捲曲:

~$ curl http://sithu.net/testinggrounds/ -I 
HTTP/1.1 200 OK 
Date: Fri, 17 Feb 2017 16:09:36 GMT 
Vary: Accept-Encoding 
Content-Type: text/html; charset=UTF-8 
X-Varnish: 6817501 6109691 
Age: 9 
X-Cache: HIT 
X-Cache-Hits: 1 
Accept-Ranges: none 
Connection: keep-alive 

的頭部清楚地表明,服務器不緩存,我們已經打了服務器緩存(X-Cache: HITX-Cache-Hits: 1)。所以下一步就是要找出如何/在哪裏可以改變你的服務器緩存機制。

X-Varnish標題表示您的服務器/主機使用Varnish HTTP Cache進行緩存。

+0

謝謝!我會試試看! –

+0

YES!xVarnish是罪魁禍首,我把它關掉了,現在它運作得儘可能好! –

+0

很高興它解決了問題:)請不要忘記提出答案,if這很有幫助。 – Striezel