2011-04-15 61 views
1

我有一個很大的問題:如何在指定時間後運行代碼?

用戶登錄,會話打開。 之後,他點擊了一個按鈕(在表單中),該按鈕的動作是「example.php」。 此使用example.php應該由1

增加一條記錄在MySQL數據庫如何寫這個「使用example.php」? 請幫忙。

編輯: 對不起,我沒有問什麼我應該問。

主要問題:用戶點擊一個按鈕

後,使用example.php腳本應在指定時間後執行,例如,一個600秒。

的另一個問題是,用戶可以點擊該按鈕並註銷,並儘管如此,使用example.php應600秒後執行。

編輯(18:48): 好的,我已閱讀所有建議,但不知道如何使所有這些事情一起工作。

我由form.php的,與輸入類型= 「提交」 和行動= 「使用example.php」。我想: 1.啓動一個javascript定時器; 2.在一段時間後增加數據庫中的一個值,在變量的前面指定。

請,如果可能的話,給我一個例子,如何做到這一點。

+1

你能解釋一下你的問題標題的含義嗎? – Eliasdx 2011-04-15 11:26:50

回答

1

example.php執行SQL:

UPDATE table SET field = field + 1; 

你需要更多的信息來做到這一點?

編輯:

我認爲有像工作機制,沒有其他辦法。當用戶調用example.php時,可以使用當前時間戳+600秒向數據庫添加新作業。

並行應該有一些運行工作執行將收集從數據庫中具有時間戳設置爲timestamp <= NOW()所有作業。

如果將一些記錄,調用指定的代碼,並刪除/標記爲已完成的作業。

+0

對不起,我沒有問過我應該問什麼。 – Rubid 2011-04-15 11:26:01

+0

然後編輯並澄清您的問題,以便我可以幫助您,countryman;) – hsz 2011-04-15 11:30:05

+1

感謝hsz,感謝您的回覆我明白了這個問題。但即使如此,我不知道如何編寫代碼:( – Rubid 2011-04-15 16:49:40

0

您可以使用延遲代碼執行sleep

例子:

<?php 
    echo 'Script Start: '.date('h:i:s') . '<br>'; 
    sleep(5); // delay in seconds (here 5) 
    echo 'Script Ende: '.date('h:i:s') . '<br>'; 
?> 

我不知道,如果你正在嘗試做的是非常合情合理的,但你的exampl.php看起來是這樣的:

<?php 
    sleep(600); // delay in seconds 
    // the code to be executed delayed here 
?> 
+0

當你關閉一個實現了'sleep'的站點時,它將停止執行該腳本 – hsz 2011-04-15 11:35:48

+0

'ignore_user_abort()'和'session_write_close()'(如果OP使用這種會話)是OP應該查看的其他函數 – Eliasdx 2011-04-15 11:36:31

+0

正確,但他只是要求延遲執行代碼 – Thariama 2011-04-15 11:50:22

0
<?php 
if(isset($_POST['submit_button'])) { 

    $link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); 

    $sql = 'UPDATE table SET counter_column = counter_column + 1'; // WHERE table_name_id =' . intval($id); 
    mysql_query($sql, $link); 
} 
?> 

example.php只會在點擊submit_button的情況下更新值,而不是如果您只需輸入URL 示例。php

0

有幾種方法可以去做這件事...... 如上所述,有睡眠方法。 你可以有一份工作 - 即把一些東西添加到工作列表中,並且每隔一段時間檢查一次cronjob以查看它是否到期。 您可以使用JavaScript計時器在x秒後執行。