What have you found for these years?

2008-12-27

cache (2)

前文提到的一些 cron 事宜,下午開始覺得不對,著手進行了一些修改。
主要的問題是,comments_count 並不是 publish 的問題,而是 sync.

朋友的相片不會改變,循其本,他本來就是一種 relationships.
然而 comments_count 卻是一種會改變的狀態,也是一種運算的結果。
前者不會也不需要改變,一個相片只需要處理一次;然而留言數的計算,
在每一次有 post 產生時都會改變。這兩者打從一開始就不一樣。

我想現在有三個選擇,就是 comments 被 post 後,替所有的計數
都加上一筆。這樣變成 post 時會牽涉到許多的 update. 其實我是覺得,
對於所有的 post, 使用者都能夠有足夠的耐心等候。重點是讀取要快。

但我想暫時還是不考慮這種作法,因為這其實也有點暴力沒錯。第二個選擇是
把所有需要增加計算的東西都塞進 queue 裡面,然後 queue 定時跑即可。
一開始想引用 bj, 後來看到 github 推薦 delayed_job, 但是這沒有 gem...

我會先選第三種,就是改成定時做 sync.

原本的 cron.rb 改成:

Cron.run(photo)
Sync.run(photo)

前者就是一開始提到的 relationship, 做完就不會再改變的。
後者則是原本的 comments_count, 需要定期去跑。實作大概像這樣:

module Runnable
def run photo
methods(false).each{ |job| send(job, photo) }
end
end

module Cron
extend Runnable
end

module Sync
extend Runnable
end

Dir['cron/jobs/*.rb'].each{ |job|
require job[0..-4]
}

這沒什麼。接下來就是把所有的工作都定義成 Cron/Sync 的 module function.
然後全部 require 進來,所有的工作就會自動批次執行了。
sync.rb 就單純執行所有需要常常跑的作業,從頭掃到尾!
這邊究竟要怎麼分工,還要細思。可能就固定拆成四塊來跑?
require 'app/datamapper/init'
require 'cron/jobs'

Photo.all.each{ |photo| Sync.run(photo) }

所以 Sync 是 Cron 的超集,Cron 要做的事 Sync 都要做,
而 Sync 額外需要固定時間掃一次。

8 retries:

Hinoris said...

聖誕節怎麼過得呀?

Hinoris said...

我最近一口氣訂了十三本輕小說(第一次訂這麼多的),運費+書=三千三台幣。

一開始我覺得這真的好貴呀。三千三台幣耶,三千三在台灣可以買很多東西吶;如果一天花一百多塊吃飯,也是可以吃上一個月的說!

可是我後來想想,三千三算成美金的話是一百,我只要打一星期的工就能賺到了……

啊,一星期的工資可以買十三本書。不知道怎麼搞得,突然覺得好便宜呀。

Hinoris said...

我在紅茶店打工,工資算成台幣一小時272塊錢。要扣稅。

Lin Jen-Shin (godfat) said...

> 聖誕節怎麼過得呀?

你說我嗎?背誦憲法啊 XDXD

> 我最近一口氣訂了十三本輕小說

輕小說有這麼好看嗎?很多不是都很泡麵? XDD
不過我一本都沒看過就是了...

一天一百多怎麼夠吃啊,隨便算算,早餐 40,
午餐 60, 晚餐 60, 宵夜 40 就要兩百了 XDD
這還是算便宜的... 60 塊其實根本吃不了什麼

你拿時薪去跟食物比差不多是多少啊?
例如一餐平均要多少?感覺這樣算比較有標準 @_@
只是如果從台灣寄到美國,含運一本 250,
是不算貴啦... 只是書收太多很難收...

Plumm said...

> 背誦憲法啊 XDXD
為何要背憲法呀??

> 我最近一口氣訂了十三本輕小說
哇,真恐怖 @@

> 一天一百多怎麼夠吃啊,隨便算算,早餐 40,
> 午餐 60, 晚餐 60, 宵夜 40 就要兩百了 XDD
去掉宵夜就一百多了啦。

jaiyalas said...

>> 背誦憲法啊 XDXD
> 為何要背憲法呀??
因為是行憲紀念日!! XD

Hinoris said...

當然不是每本輕小說都很好看囉。但有時候,輕小說中也會有那種大敗一票『正統文學』的傑作。我很喜歡這種類似尋寶的感覺哟。

Lin Jen-Shin (godfat) said...

Plumm 提到...
> 為何要背憲法呀??
jaiyalas 提到...
> 因為是行憲紀念日!! XD

> 去掉宵夜就一百多了啦。

宵夜是一定要吃的啊 XD

山邊美溪 提到...
> 我很喜歡這種類似尋寶的感覺哟。

唔,好吧,你贏了 XD

Post a Comment

Note: Only a member of this blog may post a comment.



All texts are licensed under CC Attribution 3.0