2011-12-07 91 views
1

如何在沒有用戶活動的情況下生成數據對我來說從未很清楚。假設我正在開彩票,人們可以在線查看獲獎門票號碼。 這個隨機數字必須在特定的時間自動生成,並且應該對每個訪問者都是一樣的。這是如何完成的?每X秒生成一次數據(不管用戶活動)?

我想我可以使用一個PHP腳本來檢索以前的數字並檢查它是否超過7天。如果是,那麼腳本會生成一個新號碼並將其存儲起來,所以當其他用戶訪問該頁面時,該腳本將被檢索,在這種情況下,該號碼會顯示爲不超過7天。

這種做事的方法可能會導致多個用戶同時嘗試訪問文件或覆蓋另一位訪問者同時生成的數據。我認爲如果數字可以獨立於用戶活動而生成和存儲,那麼PHP腳本的唯一任務就是將其讀取

任何想法將不勝感激!

P.S:我使用簡單的虛擬主機並且沒有物理訪問服務器的權限,不能讓我運行.bat或.exe文件。此外,標籤可能有些不準確,因爲我不知道我應該如何處理這個問題。

+0

如果你有一臺linux機器,你會想看看Crontab。在Windows上,它被稱爲計劃任務。 – Treffynnon

回答

4

使用某種調度程序在給定的時間執行任務。一個這樣的調度程序被稱爲cron,並安裝在大多數類Unix環境中。

還有一些基於雲的調度程序,它們會根據您選擇的時間表調用您的URL。

如果您的託管服務提供商不提供此服務(大部分都是!),請嘗試搜索online cronjob,hosted cron或類似的內容(「cronjob」是由cron守護程序執行的一項工作)。

+0

在一個相關的not4上,我注意到一個DB沒有被指定,顯然如果他使用了一個,那麼數據被存儲爲cron正在調用的腳本的一部分,但是,他可以使用'fwrite'來存儲數據包含文件,我會寫它來使用PHP的'define'函數,然後在沒有數據庫可用的情況下使用定義的變量調用數據。當你需要歷史數據時,這個方法確實有問題,所以腳本需要重命名現有的包含文件並用新數字創建一個新文件,或者在重寫之前用舊數據將當前數據寫入另一個文件。 – Ryan

+0

我確實有在我的主機控制面板訪問cronjobs,從來不知道它是什麼,非常感謝!這看起來是正確的,是嗎? http://i.imgur.com/p3WpA.png – Chris

+0

這意味着它將在每個星期六的12:00運行。我認爲這是正確的,但也許你應該檢查託管支持。有時候他們要求PHP腳本是可執行的,並且在腳本的第一行有一個所謂的「shebang」,有時它們不會。支持人員應該能夠回答這些問題。 –

1

由於您擁有簡單的託管功能,因此您不太可能像您所說的那樣訪問「首選」方法(計劃任務,運行服務等)。

因此,IMO最好的選擇是測試最後一次更新的日期+時間,如果正確的時間已經超過了更新時間,那麼在顯示之前。

爲了解決剛剛更新之前偶然擊中網頁的用戶顯示的「陳舊信息」問題,您可以顯示帶有值(抽獎號碼?)的日期信息 - 例如, 「星期六2011年12月3日的數字:1 5 10」,讓用戶知道他們在看什麼。

作爲一個額外的,你可以在該頁面上使用JavaScript來檢查日期和時間並更新顯示的值(刷新頁面或使用ajax),如果用戶恰好在更新時間正在查看頁面。