2014-01-19 246 views
-2

我想在按下開始按鈕後每分鐘運行腳本。每分鐘運行腳本

我該如何做到這一點?

這是我想太多運行的代碼:

if (!isset($_SESSION)) { 
    session_start(); 
} 

$loggedUser = $_SESSION['MM_Username']; 
$result=mysql_query("SELECT `availableTime` FROM `user` WHERE userName='$loggedUser'"); 
$row=mysql_fetch_assoc($result); 
$time=$row['availableTime']; 

if ($time > 0){ 
mysql_query("UPDATE `user` SET `availableTime` = `availableTime` - 1 WHERE userName='$loggedUser' "); 
} else { 
mysql_query("UPDATE `user` SET `availableTime` = `availableTime` = 0 WHERE userName='$loggedUser' "); 
    header('Location: http://192.168.42.1/kick.php?ip=' . $_SESSION['ip']) ; 
} 
+0

您應該使用cronjob –

回答

4

如果你在UNIX上crontab,如果你在Windows上使用Windows Task Scheduler

的Cron示例(每分鐘)

* * * * * /path/to/php /var/www/html/yourscript.php 

心的變化

我想你想在這裏做的是在用戶瀏覽器中使用AJAX每分鐘調用一次該腳本,並檢查用戶是否仍然被允許登錄,如果用戶不應該登錄,你應該用PHP殺掉他們的會話,然後用javascript重定向他們。

+0

我在unix上,crontab會在mult iple用戶登錄? – user3170212

+0

Crontab只會按照您設置的那樣經常運行該腳本。在這種情況下,您需要更改查詢以搜索時間已到期的任何用戶。 –

1

使用crontab/windows任務計劃程序並通過執行exec()/ system()

0

以下是您的問題。 按下啓動按鈕後。 你需要使用javascript/jquery來做到這一點。

您可以使用下面函數來調用5000 milisecond

setInterval(function(){ajaxcall();},5000); 

中使用AJAX的腳本下面是函數調用Ajax

function ajaxcall() { 
    AJAX call your php script 
} 
+0

這看起來像我想要的!我怎麼能把這段代碼包裝在一個按鈕中? – user3170212

+0

你可以這樣做, 在按鈕上添加onclick事件來調用它。 – chen

0

我認爲你需要從一個打電話給你的PHP腳本javascript call

var timerID = setInterval(function() { 
    $.ajax({ 
     url: "script.php", 
     context: document.body 
    }); 
    }, 60 * 1000); 


    clearInterval(timerID);