是否有任何Cronjob的JavaScript替代品?Javascript替代CronJob
事情是,我的老闆不想再使用CronJob進行日常執行,並告訴我,如果我們可以用javascript而不是CronJob來做。
我寫了一個php + javascript代碼。它基本上從數據庫中收集日常任務數據(執行哪個.php文件,時間間隔等),並將它們放入一個對象中。
然後,
<script>
function mainFunc(){
for(var i=0; i<sizeOfJobs(); i++){ //traverse in the object
currentDate = new Date();
//if any of the jobs execution time has come, execute it
if(jobs[i]['next_run'] <= currentDate){
$.ajax({
url: jobs[i]['file_location'] ,
async: false, //this is another question, look below please
success: function(data){
//after the finish, set next_run and last_run
currentDate = new Date();
jobs[i]['last_run'] = currentDate;
var nextRun = new Date();
nextRun.setTime(currentDate.getTime() + (jobs[i]['interval'] * 60 * 1000));
jobs[i]['next_run'] = nextRun;
}
});
}
}
//repeat
//currently 10 sec but it will increase according to jobs max runtime
setTimeout(mainFunc,10000);
}
$(document).ready(function(){
setTimeout(mainFunc,10000);
})
</script>
所以,我用這個代碼。它適用於基本工作,但會有大量工作需要10分鐘以上才能完成(如刪除並重新填充具有數千行的分表)
- 安全嗎?
- 我應該將「async」值設置爲false嗎?
- 我知道的情況,有可能是其在同一時間執行工作,如果我設置異步假,每一項工作需要等待完成以前的工作等等,所以我需要設置的setTimeout值所有作業的總最大運行時間。
- 如果我確定了它會發生什麼?我的擔心是,如果某個作業在setTimeout時間間隔之前無法完成,則next_run將不會被設置,並且會自動重新執行。那麼我應該在ajax調用之前設置next_run的值嗎?
回到正題,我應該需要做的這一切?有更好的解決方案或庫嗎? (我用Google搜索,但沒有找到什麼有用的東西。)
謝謝
setInterval(fun_here,30000); ? HTTP://計算器。com/questions/4695629/cron-job-but-for-jquery-javascript –
是的,我在發佈這個問題之前看到它,但不幸的是它並沒有解決我的問題。 – dhargan
我很想知道這是否可行......但我更感興趣的是想知道爲什麼你的老闆看起來很不願意使用cron:一個可靠的,隨時可用的工作調度程序。特別是因爲你提到你將執行像db截斷/插入等服務器端操作,好像他在爲你編織一個痛苦的世界:o –