2016-11-17 1 views
0

Я пытаюсь выполнить javascript-файл каждые два часа. Я использую node.js так я создаю эту CRONСоздать cron executing node.js файл

1 * * * * /usr/bin/node /var/www/html/uniphiData/js/recalculate_points.js 

Мой файл recalculate_ponts.js это:

вар MySQL = требуется ('/ вар/WWW/HTML/uniphiData/MySQL');

var connection = mysql.createConnection({ 
    host: 'HOST', 
    user: 'USER', 
    password: 'PASS!', 
    database: 'DATABASE' 
}); 

connection.connect(); 

connection.query('SELECT * FROM users', function (err, rows, fields) { 
    if (err) throw err; 

    rows.forEach(function (row, index) { 
     connection.query('SELECT count(*) AS friends FROM users WHERE invitedByFriend = ' + row.ID, function (err2, friends, fields2) { 
      if (err2) throw err2; 

      var realCountFriends = friends[0].friends; 
      friends = friends[0].friends * 50; 

      var id = '%;' + row.ID + ';%'; 

      connection.query('SELECT SUM(pointsPerShare) AS shareEvent FROM events WHERE shared LIKE "' + id + '"', function (err3, pointsPerSharing, fields3) { 
       if (err3) throw err3; 

       if (pointsPerSharing[0].shareEvent == null) 
        pointsPerSharing = 0; 
       else 
        pointsPerSharing = pointsPerSharing[0].shareEvent; 

       connection.query('SELECT SUM(e.pointsEntry) AS entry FROM orders o, events e WHERE o.used = 1 AND o.userID = ' + row.ID + ' AND o.eventID = e.ID', function (err4, pointsEntry, fields4) { 

        if (err4) throw err4; 

        if (pointsEntry[0].entry == null) 
         pointsEntry = 0; 
        else 
         pointsEntry = pointsEntry[0].entry; 


        connection.query('SELECT SUM(e.pointsPrepay) AS purchase FROM orders o, events e WHERE o.guestList = 0 AND o.cheapList = 0 AND o.userID = ' + row.ID + ' AND o.eventID = e.ID', function (err5, pointsPrepay, fields5) { 
         if (err5) throw err5; 

         if (pointsPrepay[0].purchase == null) 
          pointsPrepay = 0; 
         else 
          pointsPrepay = pointsPrepay[0].purchase; 

         var shareApp = row.quantitySharedApp * 20; 
         var newUser = 50; 

         var realCount = friends + pointsPerSharing + pointsEntry + pointsPrepay + shareApp + newUser; 
         var difference = realCount - row.totalPoints; 

         if (difference != 0) { 
          connection.query('UPDATE users SET points = points + ' + difference + ', totalPoints = ' + realCount + ', monthPoints = monthPoints + ' + difference + ', friendsInvited = ' + realCountFriends + ' WHERE ID = ' + row.ID, function (err6, changePoints, fields6) { 

           if (index == rows.length - 1) { 
            connection.end(); 
           } 
          }) 
         } else { 

          if (index == rows.length - 1) { 
           connection.end(); 
          } 
         } 

        }) 

       }) 


      }) 


     }) 
    }) 

}); 

Бревна в хронах это:

Nov 17 14:55:01 name CRON[4677]: (root) CMD (/usr/local/rtm/bin/rtm 14 > /dev/null 2> /dev/null) 

Конечно не выполняет файл JavaScript, и я знаю, что скрипт работает, потому что я исполняю его без хрон. Я не знаю, что я делаю неправильно, но я ищу в Интернете, и я пытаюсь установить абсолютный маршрут и относительный маршрут, но ничего не происходит.

Благодаря миллиона

+0

ли вам на самом деле нужен весь файл, который будет запускаться каждые два часа, или будет только планировать ваш запрос (по коду и в коде)? В последнем случае вы можете взглянуть на модуль ['cron'] (https://www.npmjs.com/package/cron). – schroffl

+0

@schroffl yes Мне нужно запустить весь скрипт – Ary

ответ

1

Вы можете создать скрипт Баш (.sh), который выполняет файл .js. Вы будете вызывать файл .sh с вашим cron.

1 * * * * /path/to/file.sh 

.sh файл может выглядеть следующим образом:

#!/bin/bash cd "$(dirname "$0")" node ./app.js

app.js, очевидно, ваш Javascript файл, который находится в той же папке, что и файл .sh

+0

Я ставлю то же самое, но cron, как 1 * * * *, чтобы выполнить каждую минуту, чтобы протестировать сейчас, и он не работает. – Ary

+0

@ А что говорит журнал? – Syc

+0

Я написал в вопрос: ноя 17 14:55:01 имя CRON [4677]: (root) CMD (/ usr/local/rtm/bin/rtm 14>/dev/null 2>/dev/null) – Ary