2012-04-28 91 views
0

我需要每15分钟运行自动化任务。任务是为我的服务器(称为服务器A,Ubuntu 10.04 LAMP)查询更新到另一台服务器(服务器B)。运行ubuntu 10.04服务器的多个自动化任务

我有多个用户查询,可能14(或更多)用户。截至目前,脚本是用PHP编写的。他们做到以下几点:对用户的

  • 更新

    1. 请求服务器B如果服务器B说有更新,那么服务器A检索更新
    2. 在服务器A,更新数据库与该新数据用户
    3. 在服务器A中运行计算
    4. 向我收到数据更新的用户发送提示。

    我知道cron作业可能是要走的路,但也可能有这样一个场景,我可能会为每个用户cron作业。这是否合理?或者我应该强迫它做一个cron作业,为我的所有用户查询数据?

    此外,我查询的服务器有一个Java API,我可以用它来查询它。这意味着我可以开发一个Java servlet来做同样的事情。这种方法我遇到了麻烦,但我正在寻找反馈意见,如果这是要走的路。我对Tomcat不熟悉,我还没有完全理解它。

    摘要:我需要我的服务器每15分钟自动运行一次任务,从另一台服务器请求数据,更新其数据库,然后向用户发送提示。什么是推荐的方法?

    感谢您的帮助!

  • +0

    如果正确优化代码,则不需要为每个用户提供一个cron作业1或2 cron作业可以完成作业或更好地完成作业e像“german”或“beanstalkd”这样的消息队列 – Baba 2012-04-28 22:44:28

    +0

    如果您控制服务器B,为什么不只将服务器B上的cron作业放到服务器A的数据库中并提醒用户?有服务器“问”似乎是不必要的步骤 – 2012-04-28 22:47:50

    +0

    @Baba我不熟悉消息队列[德语]。你能分享一些信息吗? – lrpr 2012-04-28 22:48:54

    回答

    0

    创建一个脚本,由cron触发,通过每个用户的循环,并采取三个步骤,为每个用户:伪代码:

    query for list of users from local DB; 
    foreach(users as user){ 
        check for updates; 
        if(updates){ 
         update db; 
         email user; 
        } 
    } 
    

    如果你有很多用户或API是缓慢的,你可能想要设置一个长脚本超时(ini_set),或者你可以添加一个TIMESTAMP DB列“LastUpdateCheck”,并更频繁地运行cron(每30秒?),但限制更新/ API查询为每个用户一个或两个实例(具有最早更新时间的实例)