2012-10-21 40 views
1

我有一個「會話」如下表:如何編寫PHP /科雷腳本來自動執行任務

SessionId(Auto) SessionName SessionDate SessionTime Duration Active 
1    AASEA  21-09-2012 09:00:00 01:00:00 1 
2    SDERF  11-09-2012 10:00:00 01:00:00 1 
3    DERSD  30-11-2012 12:00:00 01:30:00 1 

現在我想做的是使用cron來能夠設置上述各屆「活躍「 - 如果本次會議在2012年10月21日之前一週舉行,或者本年度較早,則爲0。所以在上面的Session Table中,通過將「Active」更改爲0,它應該使前兩行處於非活動狀態。第三行不會隨着其開始日期的變化而明顯改變。因此,該會議將不會自動無效,直到2013年10月21日。

所以我想知道,因爲我以前沒有使用CRON,這是一個微妙的任務,因爲它需要進行測試,以確保它的工作,做有人知道如何,以便它下面寫PHP/CRON腳本:

  • 設置「活動」價值爲0表示開始日期的所有會話是整整一週的10月21日的日期前今年?
  • 它必須能夠知道當年自動爲
  • 此過程發生逐年什麼每年每10月21日

感謝

+0

Cron只能在給定時間執行命令,它不知道php或mysql。在最近的Linux上,您可以鍵入'crontab -e'來編輯crontab文件,並且您可以安排每年10月21日運行的命令。該命令也可以是一個php腳本,可以使用php cli執行。 – antiguru

+0

@antiguru我只想要一個基本的腳本,如果達到日期,它只會將之前日期中的考試設置爲在數據庫中處於非活動狀態。是否有辦法做到這一點,它不一定要在CRON中,但我不是一個Web開發人員(我是一名SQL/Oracle開發人員),所以我不知道如何做到這一點,甚至不需要編碼 – user1723710

+0

您可以編寫一個可以執行所需操作的SQL語句並將其提供給數據庫的命令行客戶端。整個命令可以由cron執行。也許在Oracle中甚至存在這種功能。 – antiguru

回答

0

寫這個劇本的PHP文件並保存到某個地方在應用程序中直接。

<?php 
$con = mysql_connect("localhost","root","password"); 
$db = mysql_select_db("your_database"); 


$createDate = mktime(0,0,0,10,21,date("Y")); 
$selectedDate = date('d-m-Y', ($createDate)); 
$sql = mysql_query("UPDATE Session SET Active = 0 WHERE DATE_FORMAT(SessionDate,'%Y-%m-%d') <= '".$selectedDate."'"); 

?> 

現在您需要登錄您的託管網站 - cPanel並訪問CRON作業。你需要設置一個新的CRON作業。這是一個如何設置一個cron作業的教程 - http://www.youtube.com/watch?v=0OBvGbyj15Q

只需用上面寫的腳本替換視頻中使用的URL,它應該可以正常工作。確保您替換憑據和數據庫。

您可以在每年10月21日設置cron作業,也可以每天運行一次。我們的腳本無論如何都會驗證日期,所以如果您每天都運行cron作業也沒有問題。這不是一個昂貴的查詢,所以使用的資源是最少的。

+0

謝謝阿布舍克:) – user1723710