Перейти к содержанию
  • Лента
  • Категории
  • Последние
  • Метки
  • Популярные
  • Пользователи
  • Группы
Свернуть
exlends
Категории
  1. Главная
  2. Категории
  3. Языки программирования
  4. JavaScript
  5. Как сделать рабочие часы для скрипта

Как сделать рабочие часы для скрипта

Запланировано Прикреплена Закрыта Перенесена JavaScript
javascript
15 Сообщения 5 Постеры 140 Просмотры
  • Сначала старые
  • Сначала новые
  • По количеству голосов
Ответить
  • Ответить, создав новую тему
Авторизуйтесь, чтобы ответить
Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
  • MugiwaraM Не в сети
    MugiwaraM Не в сети
    Mugiwara
    написал в отредактировано
    #6

    можно перезапускать по крону или по pm2 скрипт (pm2 будет каждый раз перезапускаться после завершения при стандартных настройках)
    а проверку можно сделать еще и в скрипте

    const now = new Date();
    const hour = now.getHours();
    
    if (hour < 8 || hour > 17) {
      process.exit(0);
    }
    
    // тут ваша логика
    
    hannadevH 1 ответ Последний ответ
    👍
    3
    • MugiwaraM Mugiwara

      Пользователь @hannadev написал в Как сделать рабочие часы для скрипта:

      function workingHours(data = Date ()) {
      const hour = data.getHours();
      return hour >= 8 && hour < 17;
      }

      мне кажется код не рабочий, ты его запускала? у data должен быть новый экземпляр new Date()

      hannadevH Не в сети
      hannadevH Не в сети
      hannadev
      написал в отредактировано
      #7

      @Mugiwara Поправила!!!

      1 ответ Последний ответ
      2
      • LinusL Linus

        и как можно называть переменную, которая отвечает за дату - data а не date?

        hannadevH Не в сети
        hannadevH Не в сети
        hannadev
        написал в отредактировано
        #8

        @Linus Вы чего напали то людоеды блин… 😧

        1 ответ Последний ответ
        1
        • MugiwaraM Mugiwara

          можно перезапускать по крону или по pm2 скрипт (pm2 будет каждый раз перезапускаться после завершения при стандартных настройках)
          а проверку можно сделать еще и в скрипте

          const now = new Date();
          const hour = now.getHours();
          
          if (hour < 8 || hour > 17) {
            process.exit(0);
          }
          
          // тут ваша логика
          
          hannadevH Не в сети
          hannadevH Не в сети
          hannadev
          написал в отредактировано
          #9

          @Mugiwara Вот эта нормальная тема, а как в pm2 настроить такое то?

          MugiwaraM 1 ответ Последний ответ
          2
          • hannadevH hannadev

            @Mugiwara Вот эта нормальная тема, а как в pm2 настроить такое то?

            MugiwaraM Не в сети
            MugiwaraM Не в сети
            Mugiwara
            написал в отредактировано Mugiwara
            #10

            @hannadev
            пример скрипта который выполняет что-то

            // script.js
            async function main() {
                console.log(`[${new Date().toISOString()}] Запуск скрипта через PM2`);
                
                // Эмуляция работы
                await new Promise(r => setTimeout(r, 2000)); 
                console.log('Работа выполнена.');
            
                // ОБЯЗАТЕЛЬНО: завершаем процесс, чтобы PM2 не перезапускал его мгновенно,
                // а ждал следующего тика Cron.
                process.exit(0);
            }
            
            main();
            

            вот команда pm2 где 30 - количество минут которое он ждет до следующего рестарта, нужно указать не меньше минут чем время выполнения скрипта( его бы надо примерно знгать)

            pm2 start script.js --cron "*/30 8-17 * * *" --no-autorestart
            

            еще момент: pm2 работает так, что если выйдет ошибка - то скрипт сразу перезапускается

            kirilljsxK 1 ответ Последний ответ
            4
            • MugiwaraM Mugiwara

              @hannadev
              пример скрипта который выполняет что-то

              // script.js
              async function main() {
                  console.log(`[${new Date().toISOString()}] Запуск скрипта через PM2`);
                  
                  // Эмуляция работы
                  await new Promise(r => setTimeout(r, 2000)); 
                  console.log('Работа выполнена.');
              
                  // ОБЯЗАТЕЛЬНО: завершаем процесс, чтобы PM2 не перезапускал его мгновенно,
                  // а ждал следующего тика Cron.
                  process.exit(0);
              }
              
              main();
              

              вот команда pm2 где 30 - количество минут которое он ждет до следующего рестарта, нужно указать не меньше минут чем время выполнения скрипта( его бы надо примерно знгать)

              pm2 start script.js --cron "*/30 8-17 * * *" --no-autorestart
              

              еще момент: pm2 работает так, что если выйдет ошибка - то скрипт сразу перезапускается

              kirilljsxK Не в сети
              kirilljsxK Не в сети
              kirilljsx
              js
              написал в отредактировано
              #11

              @Mugiwara То есть хочешь сказать отпадает смысл вообще в setInterval() ?

              MugiwaraM 1 ответ Последний ответ
              1
              • kirilljsxK kirilljsx

                @Mugiwara То есть хочешь сказать отпадает смысл вообще в setInterval() ?

                MugiwaraM Не в сети
                MugiwaraM Не в сети
                Mugiwara
                написал в отредактировано Mugiwara
                #12

                @kirilljsx Сначала надо понять какая цель у интервала, можно и без него перезапускать скрипт после завершения через pm2, я же привел пример, когда надо задать именно интервал? а так каждый газует как хочет, вон, предложили кронтаб использовать, самый простой и производительный вариант.

                Но если ты скрипт будет все равно на pm2 вешать, что скорее всего так и произойдет, то удобнее его интегрировать сразу. А если без pm2, то тебе еще ошибки ловить, как-то перезапускать если что-то не так

                kirilljsxK 1 ответ Последний ответ
                4
                • MugiwaraM Mugiwara

                  @kirilljsx Сначала надо понять какая цель у интервала, можно и без него перезапускать скрипт после завершения через pm2, я же привел пример, когда надо задать именно интервал? а так каждый газует как хочет, вон, предложили кронтаб использовать, самый простой и производительный вариант.

                  Но если ты скрипт будет все равно на pm2 вешать, что скорее всего так и произойдет, то удобнее его интегрировать сразу. А если без pm2, то тебе еще ошибки ловить, как-то перезапускать если что-то не так

                  kirilljsxK Не в сети
                  kirilljsxK Не в сети
                  kirilljsx
                  js
                  написал в отредактировано
                  #13

                  @Mugiwara А вот как раз напрашивается вопрос производительности и оптимизации что лучшее поебывать setInterval() или pm2
                  Как говориться есть 2 стула))

                  1 ответ Последний ответ
                  1
                  • DinozaurD Не в сети
                    DinozaurD Не в сети
                    Dinozaur
                    написал в отредактировано
                    #14

                    Очередной вкатун)))

                    hannadevH 1 ответ Последний ответ
                    2
                    • DinozaurD Dinozaur

                      Очередной вкатун)))

                      hannadevH Не в сети
                      hannadevH Не в сети
                      hannadev
                      написал отредактировано
                      #15

                      @Dinozaur

                      1 ответ Последний ответ
                      0

                      Категории

                      • Главная
                      • Новости
                      • Фронтенд
                      • Бекенд
                      • Языки программирования

                      Контакты

                      • Сотрудничество
                      • info@exlends.com
                      • Наш чат
                      • Наш ТГ канал

                      © 2024 - 2025 ExLends, Inc. Все права защищены.

                      Политика конфиденциальности
                      • Войти

                      • Нет учётной записи? Зарегистрироваться

                      • Войдите или зарегистрируйтесь для поиска.
                      • Первое сообщение
                        Последнее сообщение
                      0
                      • Лента
                      • Категории
                      • Последние
                      • Метки
                      • Популярные
                      • Пользователи
                      • Группы