Перейти к содержимому
-
Subscribe to our newsletter & never miss our best posts. Subscribe Now!
Детский университет

Развитие и обучение детей: практические материалы для родителей и педагогов

Детский университет

Развитие и обучение детей: практические материалы для родителей и педагогов

  • Главная
  • Контакты
  • О проекте
  • Политика конфиденциальности
  • Главная
  • Контакты
  • О проекте
  • Политика конфиденциальности
Закрыть

Поиск

  • https://www.facebook.com/
  • https://twitter.com/
  • https://t.me/
  • https://www.instagram.com/
  • https://youtube.com/
Subscribe
Блог

Ежедневное разовое выполнение задания сайта на WP

2 Минут чтения
0

Есть задача на сайте на WP сделать ежедневную проверку определенных параметров. Испробовал несколько вариантов, однако все они одномоментно выполняются по 2-3 раза, иногда по 4 раза. Надо, чтобы код выполнялся строго один раз ежедневно.

Это вам поможет
  1. Scratch и нейросети для школьников
  2. Автовебинар "Как вовремя помочь ребёнку, пока стресс и перегрузки не убили интерес к учёбе"
  3. Подготовка к ЕГЭ с гарантией результата 11 класс
  4. Экспресс-подготовка к школе
  5. Ментальная арифметика для детей

Вот первый вариант. add_action('init', 'check_has_photo_and_profile_completed'); function check_has_photo_and_profile_completed(){ $get_transient = get_transient('book_872345'); if (false === $get_transient || time() > $get_transient){ global $wpdb; $res = $wpdb->get_results('SELECT ID……'); foreach($res as $item){ /*здесь выполняется код проверки*/ } set_transient('book_872345', (time() + DAY_IN_SECONDS), (time() + 86400 + DAY_IN_SECONDS)); }} В этом варианте изначально и каждый день код внутри цикла foreach повторяется по три раза в один момент. Вот другой вариант. add_action( 'book_daily_photo_profile_check', 'get_profile_completed' ); if (false === wp_next_scheduled('book_daily_photo_profile_check')) { wp_schedule_event( time(), 'daily', 'book_daily_photo_profile_check' ); } function get_profile_completed(){ global $wpdb; $res = $wpdb->get_results('SELECT ID,……..'); foreach($res as $item){ //здесь выполняется код проверки } } В этом варианте также код одномоментно выполняется по 3-4 раза в первый раз и каждый день по 4 раза. Что я делаю не так? И как сделать выполнение проверки строго один раз в сутки? Это добавил после ответа @Roman Я и до этого испробовал разные варианты, вот и сейчас то же самое, код проверки выполняется 4 раза одномоментно. Вот код, который я использовал: add_action('wp', 'book_schedule_daily_photo_profile_check'); function book_schedule_daily_photo_profile_check() { if (!wp_next_scheduled('datebook_daily_photo_profile_check')) { $datetime = time() + 900; wp_schedule_event($datetime, 'hourly', 'datebook_daily_photo_profile_check'); } } Использовал hourly вместо daily, чтобы долго не ждать. add_action( 'datebook_daily_photo_profile_check', 'get_profile_completed' ); function get_profile_completed(){ if (!add_option('book_daily_photo_profile_lock', true, '', 'no')) { return; } global $wpdb; $filename = __DIR__ . '/new-file.txt'; $res = $wpdb->get_results('SELECT …', ARRAY_A); if(!is_null($res) && is_array($res) && !empty($res)){ foreach($res as $item){ //—здесь выполняется проверка file_put_contents($filename, PHP_EOL.'—Privet—'.PHP_EOL.microtime(true), FILE_APPEND); }} delete_option('book_daily_photo_profile_lock'); } Здесь специально добавил запись в файл, чтобы показать реальную картину. Вот что записалось в файл: —Privet— 1793405423.7234 —Privet— 1793405423.7234 —Privet— 1793405423.7235 —Privet— 1793405423.7235 —Privet— 1793409152.9463 —Privet— 1793409152.9464 —Privet— 1793409152.9464 —Privet— 1793409152.9465 —Privet— 1793412804.5078 —Privet— 1793412804.5079 —Privet— 1793412804.508 —Privet— 1793412804.5081 —Privet— 1793416226.776 —Privet— 1793416226.7761 —Privet— 1793416226.7761 —Privet— 1793416226.7762 Если внимательно посмотреть на временные отметки, то можно увидеть, что код проверки выполняется ежечасно по 4 раза с разницей в несколько миллисекунд. Прямо какое-то наваждение! Это что, создаются сразу 4 экземпляра wp_schedule_event? А может, дело в настройках сервера?

Источник: ru.stackoverflow.com — ru.stackoverflow.com/questions/1627581/%D0%95%D0%B6%D0%B5%D0%B4%D0%BD%D0%B5%D0%B2%D0%BD%D0%BE%D0%B5-%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%BE%D0%B5-%D0%B2%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F-%D1%81%D0%B0%D0%B9%D1%82%D0%B0-%D0%BD%D0%B0-wp

Метки:

задания
Автор

admin

Подпишись на меня
Другие статьи
Unity 2D: Почему изображение в Game View смещено относительно центра камеры?
Назад

Unity 2D: Почему изображение в Game View смещено относительно центра камеры?

Далее

Как вызвать из php-файла другой php-файл в качестве заголовка?

Нет комментариев! Будьте первым.

Добавить комментарий Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Свежие записи

  • Почему весь мир снова играет в настолки и надолго ли это?
  • «Хокум» — наконец-то действительно страшно?
  • The Elder Scrolls VI Sentinel — теперь новая флагманская игра Bethesda
  • Почему GTA 6 может стать последней GTA, которую мы ждём 13 лет
  • Настолки в одиночку: скучное занятие или новый формат вечера?

Свежие комментарии

Нет комментариев для просмотра.

Архивы

  • Ноябрь 2026

Рубрики

  • Блог
Copyright 2026 — Детский университет. All rights reserved. Blogsy WordPress Theme
О проекте  ·  Контакты  ·  Политика конфиденциальности