• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    Web開(kāi)發(fā)中定期清除用戶列表之sql

    2014-04-29 00:00:00蔣麗麗
    數(shù)字化用戶 2014年4期

    【摘 要】Android系統(tǒng)的發(fā)展,智能手機(jī)的普及,使得我們可以方便的隨時(shí)隨地瀏覽頁(yè)面,同時(shí)也會(huì)在web登陸過(guò)程中留下大量的個(gè)人信息,這就使得在web服務(wù)中有自動(dòng)清除個(gè)人信息的功能變的不可缺少,本文就從sql層面探討這方面的應(yīng)用。

    【關(guān)鍵詞】android,sql 周期任務(wù)

    一、情景設(shè)定

    客戶端為android手機(jī),登錄后希望保存其在線狀態(tài)(server端),并且對(duì)于每一個(gè)在線用戶都有一個(gè)相應(yīng)的checksum值,每次執(zhí)行操作時(shí)需要校驗(yàn)該值。為了防止黑客截獲checksum值進(jìn)行二次攻擊,因此checksum值在每次登錄或間隔一段時(shí)間后都會(huì)動(dòng)態(tài)改變。因此需要在server端保存用戶的在線狀態(tài),當(dāng)用戶離線時(shí)或超出一定時(shí)間沒(méi)有操作時(shí),刪掉在線記錄,這樣每次新登錄時(shí)就會(huì)產(chǎn)生新的checksum值。

    二、問(wèn)題

    需要定時(shí)清理過(guò)期的在線用戶,因?yàn)橛械挠脩粝矚g保存密碼而不使用登出功能。

    三、解決方法

    定時(shí)清理過(guò)期的在線用戶,可以想到使用一些周期性的定時(shí)任務(wù)。定時(shí)任務(wù)可以設(shè)置在操作系統(tǒng)中,也可以設(shè)置在web application中,但今天想做的是直接使用MySQL的周期任務(wù)。

    四、過(guò)程

    MySQL中的定時(shí)周期任務(wù)是Event Scheduler,見(jiàn)網(wǎng)頁(yè) http://dev.mysql.com/doc/refman/5.6/en/events.html ,該頁(yè)面的右側(cè)可以選擇你的MySQL的版本,以查看相應(yīng)的Event Scheduler的手冊(cè)。我們使用的是MySQL 5.5.先來(lái)看看它的overview:“Conceptually, this is similar to the idea of the Unix crontab (also known as a“cron job”) or the Windows Task Scheduler.”可以看到,它和cron job是類似的,那我們可以預(yù)計(jì)它應(yīng)該也是啟用一個(gè)list,然后往這個(gè)list中加入一個(gè)個(gè)任務(wù),然后mysql會(huì)啟動(dòng)一個(gè)線程專門(mén)維護(hù)這個(gè)list,并在適當(dāng)?shù)臅r(shí)間執(zhí)行該list上符合條件的任務(wù)。大概了解了Event Scheduler的概念后,我們進(jìn)入下一個(gè)步驟Event Scheduler Configuration。在Event Scheduler Configuration中介紹了Event Scheduler的三種狀態(tài)ON/OFF/DISABLED,它們分別代表什么含義以及如何切換均參見(jiàn)Event Scheduler Configuration頁(yè)面。

    現(xiàn)在,我們用show processlist命令來(lái)查看一下活動(dòng)中的Event Scheduler有哪些。

    執(zhí)行,輸出:

    我們現(xiàn)在要啟用Event Scheduler,輸入命令

    或者也可以在server的配置文件((my.cnf, or my.ini on Windows systems)中設(shè)置event_scheduler=1,然后重啟服務(wù)器。

    現(xiàn)在我們?cè)賮?lái)查看Event Scheduler的狀態(tài):

    輸出:

    可以看到已經(jīng)啟動(dòng)了。

    為了測(cè)試,我們先建立一個(gè)onlineUser表,并插入數(shù)據(jù)

    下一步就是設(shè)定我們的定時(shí)任務(wù):

    CREATE EVENT cleanOvertimeOnlineUser

    ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 5 minute

    DO

    delete from test.onlineUser where lastVisit < date_sub(now(), interval 24 hour);

    執(zhí)行,輸出:

    我們等5分鐘,查看結(jié)果。

    可以看到2013-04-14 18:55:05的那條記錄已經(jīng)被刪除了。

    五、其他

    Event Scheduler在執(zhí)行諸如select等會(huì)有返回值的語(yǔ)句時(shí),是不會(huì)返回內(nèi)容到console上的,也不會(huì)返回到內(nèi)存中。這樣select語(yǔ)句似乎在Event Scheduler中沒(méi)什么用,其實(shí)不是,它可以用來(lái)作為insert語(yǔ)句的原料。例如:

    用類似這樣的語(yǔ)句可以在數(shù)據(jù)庫(kù)層自動(dòng)完成網(wǎng)站一些統(tǒng)計(jì)量的更新,而不用寫(xiě)到web application中。

    項(xiàng)目:重慶市教委科學(xué)技術(shù)項(xiàng)目KJ133103

    晋江市| 茂名市| 鄯善县| 南和县| 武乡县| 沙坪坝区| 成都市| 乐清市| 留坝县| 长丰县| 霍城县| 庆安县| 宁明县| 四会市| 永顺县| 江北区| 福泉市| 泊头市| 萨迦县| 博罗县| 达孜县| 太湖县| 阿坝县| 济南市| 兰州市| 昌图县| 铜川市| 高雄市| 华阴市| 诏安县| 赞皇县| 蛟河市| 黄山市| 天镇县| 呼图壁县| 来凤县| 利川市| 泰兴市| 东阿县| 泰和县| 营山县|