On Feb 28, 2011, at 12:42, Tan Cheng wrote:

> Thanks for all the input!!! So much good information to learn. Due to
> the tight budget and maybe the site traffic will not be so high, I am
> still looking at a shard hosting which supports cron, and maybe let it
> run a cake shell every 5 hours to encode and update the database. I
> think I am going to do some testing on my ubuntu localhost first. My
> goal here may to get my feet wet before thinking about vps with a
> queue system.

The advantage of having a single daemon that just keeps on running is that you 
don't have to worry that there's another copy of the daemon running at the same 
time, possibly competing for encoding the same video. If you run the script via 
cron on an interval, it is possible that the script will take longer than that 
interval to run, which would introduce this problem. So if you're going to do 
this, then you have to handle it, for example by ensuring only one copy of the 
script can encode videos at a time. A lock file would be one simple idea that 
could work. (Designate a directory to contain locks, let's say 
"$APP/encoder/locks" (hereafter "$LOCKS"). When the daemon starts, create 
(touch) an empty file "$LOCKS/$UNIQUE" where $UNIQUE is something unique to 
this encoder instance, for example its process id or better yet a generated a 
UUID. Then check if there are any files in $LOCKS other than $UNIQUE. If there 
are, that means there are other encoders running; delete the lock and exit and 
do no encoding. Otherwise, proceed with encoding videos as discussed before, 
except instead of looping forever, loop until there are no more videos to 
encode, then delete the lock and exit.) With this in place, you could schedule 
the script to run as often as you like (every hour, every half hour, every 5 
minutes) to guarantee users' videos are encoded as quickly as you need, without 
risk of the script competing with another instance of itself.






-- 
Our newest site for the community: CakePHP Video Tutorials 
http://tv.cakephp.org 
Check out the new CakePHP Questions site http://ask.cakephp.org and help others 
with their CakePHP related questions.


To unsubscribe from this group, send email to
cake-php+unsubscr...@googlegroups.com For more options, visit this group at 
http://groups.google.com/group/cake-php

Reply via email to