Как работает планирование задач Laravel без сохранения последней завершенной даты?

В документации jQuery.fn.on есть хорошее объяснение.

Короче:

Обработчики событий привязаны только к выбранные в данный момент элементы; они должны существовать на странице, когда ваш код делает вызов .on().

Таким образом, в следующем примере #dataTable tbody tr должен существовать до генерации кода.

$("#dataTable tbody tr").on("click", function(event){
    console.log($(this).text());
});

Если на страницу вводится новый HTML-код, предпочтительнее использовать делегированные события для присоединения обработчика событий, как описано ниже.

Делегированные события имеют то преимущество, что они могут обрабатывать события от элементов потомков, которые будут добавлены в документ позже. Например, если таблица существует, но строки добавляются динамически с использованием кода, следующее будет обрабатывать ее:

$("#dataTable tbody").on("click", "tr", function(event){
    console.log($(this).text());
});

В дополнение к их способности обрабатывать события на дочерних элементах, которые еще не созданы, другим преимуществом делегированных событий является их потенциал для гораздо более низких накладных расходов, когда необходимо контролировать многие элементы. В таблице данных с 1000 строками в tbody первый пример кода прикрепляет обработчик к 1000 элементам.

Подход с делегированными событиями (второй пример кода) прикрепляет обработчик события только к одному элементу , tbody, и событию нужно только выровнять один уровень (от щелчка tr до tbody).

Примечание. Делегированные события не работают для SVG .

2
задан Chris 28 March 2019 в 03:00
поделиться

1 ответ

Cronjob не может гарантировать секунды точно. Именно поэтому, как правило, интервал cronjob не меньше минуты. Таким образом, на самом деле он не обрабатывает «вещи отключаются на несколько секунд».

Что происходит в laravel, так это после запуска команды планирования в первый раз, когда сервер спрашивает «Есть ли работа в очереди ?» каждую минуту. Если нет, это ничего не делает.

Например, возьмите «ежедневный» cronjob. Планировщику не нужно знать, когда он выполнял задачу в последний раз или что-то в этом роде. Когда он сталкивается с ежедневным cronjob, он просто проверяет, полночь ли это. Если это полночь, он запускает работу.

Кроме того, возьмите cronjob «каждые тридцать минут». Может быть, вы зарегистрировали cronjob в 10:25. Но все же в первый раз он будет работать в 10:30, а не в 10:55. Неважно, когда вы зарегистрировались или когда в последний раз он запускался. Он только проверяет, является ли текущая минута «00» или делится на тридцать. Так что в 10:30 он будет работать. Опять же, он будет работать в 11:00. и так далее.

Точно так же десятиминутный cronjob по умолчанию будет проверять, делится ли текущая минута на десять или нет. Таким образом, независимо от времени, когда вы зарегистрировали команду, она будет выполняться только в XX: 00, XX: 10, XX: 20 и так далее.

Именно поэтому по умолчанию не требуется сохранять ранее выполненное запланированное задание. Тем не менее, вы можете сохранить его в файл, если вы хотите для целей мониторинга.

0
ответ дан Nabil Farhan 28 March 2019 в 03:00
поделиться
Другие вопросы по тегам:

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