【发布时间】:2011-03-15 07:46:43
【问题描述】:
我需要执行一个“原始”SQL 语句来更新对象的状态(类似于UPDATE users SET status=1 WHERE <some conditions>。
我需要它始终在后台每 60 秒运行一次。
我该怎么做?
附言。环境为 Ubuntu 10.10 和 Rails 3.0.3
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 daemon
我需要执行一个“原始”SQL 语句来更新对象的状态(类似于UPDATE users SET status=1 WHERE <some conditions>。
我需要它始终在后台每 60 秒运行一次。
我该怎么做?
附言。环境为 Ubuntu 10.10 和 Rails 3.0.3
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 daemon
您必须使用 cron (crontab) 定期调用 Rail 脚本来执行此更新。
【讨论】:
加载rails环境运行一条sql语句是一种巨大的资源浪费。
mysql的crontab:
0 * * * * mysql your_db_name -e "users SET status=1 WHERE <some conditions>;"
PostgreSQL 的 Crontab:
0 * * * * psql -c "users SET status=1 WHERE <some conditions>" your_db_name
您可能必须在 crontab 文件的顶部设置 PATH 变量,以确保 mysql/psql 命令能够解析。
希望这会有所帮助。
【讨论】: