Задания крона, получающие доступ к тому же статическому файлу

Существует ответ, который уже выбран (и это - лучший ответ, так как инструменты VMware дают Вам столько других преимуществ), но другая опция состоит в том, чтобы также выполнить регулярные команды ntpdate в кроне. Это исправляет Ваши часы, однако не справляется с дрейфом часов, но работает в повышении.

1
задан 6 November 2009 в 01:11
2 ответа

Вы не хотите делать это; одно время Ваше задание занимает больше времени, чем минута, Вы собираетесь быть политыми из шланга. Условия состязания как этот делают для ужасных проблем: неустойчивый, непредсказуемый, и трудно диагностировать.

Pboin является точно правильным: необходимо исследовать использование семафора в коде, и затем проблема просто уходит, и Вы не должны волноваться о конфликтах расписания вообще.

Какой язык Вы используете?

Редактирование (извинения за php, не использовали его в некоторое время и немного выпитые, так может не скомпилировать):

"Обычная" тактика с блокировкой должна проверить на блокировку (который в этом случае я делаю путем попытки получить один), и если СУЩЕСТВУЕТ один, чтобы реализовать короткое ожидание и попробовать еще раз. Можно попытаться использовать сон php () функция внутри некоторое время цикл, например:

while($x){
    if(flock($file_handle, LOCK_EX)){
        $x = false;
    }else{
        sleep(5);
        $x = true;
    }
}

Я использую что-то подобное этому для тонн основанных на кроне заданий записи. Работы как очарование. Это - на самом деле похожий метод для коммуникационного протокола ALOHA, который очень похож на более поздний сетевой протокол под названием "TCP/IP". Попробуйте, попробуйте и попробуйте еще раз.

2
ответ дан 3 December 2019 в 19:54
  • 1
    Отредактированный мое сообщение со специфическими особенностями моей ситуации, включая язык I' m использование. –  Magsol 6 November 2009 в 01:12
  • 2
    Ха-ха-ха, это выглядит твердым, хотя " compile" комментарий относительно PHP был своего рода дешевой распродажей ;) Право, это несколько подобно TCP' s алгоритм задержки (хотя это - только постоянное время ожидания, а не квадратичный), но isn' t цикл и вызов к sleep избыточный на основе того, что это точно, что flock() делает? Я предполагаю that' s мой основной вопрос - это, что flock() уже делает, или я должен реализовать этот цикл сам? –  Magsol 6 November 2009 в 04:41

Ну, Вы могли перечислить свои минуты в кроне, как Вы предполагаете, но это действительно не решает проблему. (С одной стороны, крон не гарантирует выполнение в течение никакой данной минуты.)

Вы, вероятно, были бы более обеспеченной реализацией некоторой функциональности блокировки в Вашем сценарии - это - намного меньше взлома. Усовершенствованное Руководство по созданию сценариев Bash, превосходный и бесплатный ресурс предлагает lockfile команда, которая поможет Вам сделать это.

Вы будете иметь намного меньше для волнения о путем выполнения этого правильно.

1
ответ дан 3 December 2019 в 19:54
  • 1
    Отправленный редактирование на мое сообщение относительно этого, начиная с Satanicpuppy ниже также требуемого это. –  Magsol 6 November 2009 в 01:11

Теги

Похожие вопросы