在網(wǎng)站開發(fā)中,我們經(jīng)常需要定時(shí)執(zhí)行某些任務(wù),比如備份數(shù)據(jù)庫(kù)、發(fā)送郵件、更新緩存等等。這時(shí),我們需要用到的就是cron.php。
cron.php是什么?它是Drupal中自帶的一個(gè)計(jì)劃任務(wù)腳本,用于定時(shí)執(zhí)行任務(wù)。我們可以將它放入Linux的定時(shí)任務(wù)中,讓它自動(dòng)執(zhí)行。下面我們來看一下如何使用它。
* * * * * /usr/bin/wget -O /dev/null -q "http://www.example.com/cron.php?cron_key=your_key"
上面的代碼中,星號(hào)表示每分鐘都執(zhí)行,/usr/bin/wget表示執(zhí)行wget命令,-O /dev/null表示將輸出重定向到/dev/null,-q表示不輸出任何信息。最后的URL就是進(jìn)行計(jì)劃任務(wù)的URL,其中的cron_key是Drupal中的一個(gè)秘鑰,用于保證安全性。
有時(shí)候,我們需要執(zhí)行的任務(wù)并不需要每分鐘都執(zhí)行,這時(shí)候就需要指定時(shí)間間隔了。下面是一些常見的時(shí)間間隔:
- * * * * * 每分鐘
- 0 * * * * 每小時(shí)
- 0 0 * * * 每天凌晨
- 0 0 * * 0 每周日凌晨
- 0 0 1 * * 每個(gè)月的1號(hào)凌晨
- 0 0 1 1 * 每年的1月1日凌晨
假設(shè)我們要每天凌晨3點(diǎn)執(zhí)行任務(wù),代碼如下:
0 3 * * * /usr/bin/wget -O /dev/null -q "http://www.example.com/cron.php?cron_key=your_key"
以上代碼指定了時(shí)間間隔為每天的凌晨3點(diǎn)。
除了通過wget命令執(zhí)行cron.php外,我們還可以通過Drupal后臺(tái)執(zhí)行。這時(shí),我們只需要在后臺(tái)的cron.php頁(yè)面進(jìn)行手動(dòng)執(zhí)行即可。
在Drupal中,有些模塊和插件也提供了自己的計(jì)劃任務(wù),如Backup and Migrate模塊。對(duì)于這些任務(wù),我們只需要將其加入到cron.php中即可。
0 0 * * * /usr/bin/wget -O /dev/null -q "http://www.example.com/cron.php?cron_key=your_key&migrate_backup=backupdb"
上面的代碼就是Backup and Migrate模塊的計(jì)劃任務(wù)。其中的migrate_backup參數(shù)指定了要執(zhí)行的任務(wù)為備份數(shù)據(jù)庫(kù)。同時(shí),我們指定了時(shí)間間隔為每天凌晨。
總之,cron.php是我們常用的一個(gè)工具,它能夠幫助我們實(shí)現(xiàn)定時(shí)執(zhí)行任務(wù)的功能。只需要配置好時(shí)間間隔,將其加入到Linux的定時(shí)任務(wù)中,就可以自動(dòng)執(zhí)行任務(wù)了。