Форум программистов, компьютерный форум, киберфорум
WordPress
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
 Аватар для Alexodiy
6 / 6 / 2
Регистрация: 22.02.2017
Сообщений: 125

Как обработать 10к+ постов по крону

23.09.2021, 08:57. Показов 1518. Ответов 11

Студворк — интернет-сервис помощи студентам
Доброго времени суток, уважаемые форумчане

Опишу ситуацию. У меня есть 10000 постов и их количество постоянно увеличивается. Мне требуется их все обработать по крону. То есть я хочу написать такое на php:

1. Используя WP_Query отцыклить все посты
2. В цикле проверка по дате и если дата поста равна +20 дней с момента публикации, то отправляю письмо на email автору поста, а если нет то - пропускаю шаг contitue

Время выполнения такого скрипта может составлять 15-20 минут, а то и больше. Все сие действие будет запускать крон.

Как мне реализовать такое, чтобы тайм аут у сервера не подсел? Использовать ini_set в php? Или может как то разбить по шагам. Подскажите пожалуйста и если есть возможность покажите примеры.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.09.2021, 08:57
Ответы с готовыми решениями:

При запуске php файла по крону создаются двойники файлов, как от этого избавится
Привет, скажите пожалуйста есть проблема при запуске скрипта по крону на домене создается дубликат в папке попробую объяснить, но уверен...

Вывод постов в обратном порядке + счет постов
Всем привет! Нужно сделать следующее: вывести все посты на главной в обратно порядке. То есть, от старых к новым. Надо чтобы все...

Как собрать комп за 10к
Нужен дешевый компьютер чтоб тянуло игры на минималках

11
754 / 578 / 120
Регистрация: 26.02.2019
Сообщений: 3,115
Записей в блоге: 3
23.09.2021, 10:14
Цитата Сообщение от Alexodiy Посмотреть сообщение
и если дата поста равна +20 дней с момента публикации, то отправляю письмо на email автору поста,
Тебя быстрее хостер заблочит и спам-листы попадёшь... Но хозяин-барин.
Цитата Сообщение от Alexodiy Посмотреть сообщение
Как мне реализовать такое, чтобы тайм аут у сервера не подсел? Использовать ini_set в php? Или может как то разбить по шагам. Подскажите пожалуйста и если есть возможность покажите примеры.
Разбивается по-блочно (например по 50-100) и делается таймаут в скриптах. Это можно увидеть в плагинах импорта и бекапов.
1
 Аватар для Alexodiy
6 / 6 / 2
Регистрация: 22.02.2017
Сообщений: 125
23.09.2021, 10:35  [ТС]
Разбивается по-блочно (например по 50-100) и делается таймаут в скриптах. Это можно увидеть в плагинах импорта и бекапов.
Lazor, а у вас нет конкретного примера где можно посмотреть? а то я неделю искать буду. Как разбить? по пагинации что ли
0
754 / 578 / 120
Регистрация: 26.02.2019
Сообщений: 3,115
Записей в блоге: 3
23.09.2021, 11:25
Лучший ответ Сообщение было отмечено Alexodiy как решение

Решение

Цитата Сообщение от Alexodiy Посмотреть сообщение
а у вас нет конкретного примера где можно посмотреть?
Ну например в https://wordpress.org/plugins/wp-all-import/. Но найдёшь ли там...
Лучше погуглить или спросить разделе php как делать задержку между итерациями. (Я сам в этом вопросе можно сказать только теоретик - такое я писал ещё в php4 и то только для обучения)

Цитата Сообщение от Alexodiy Посмотреть сообщение
Как разбить? по пагинации что ли
Ну по какой пагинации.. Конечно же по кол-ву постов (точнее по кол-ву обрабатываемых запросов).
1
 Аватар для Alexodiy
6 / 6 / 2
Регистрация: 22.02.2017
Сообщений: 125
23.09.2021, 11:26  [ТС]
Спасибо. Спрошу в разделе php
0
220 / 173 / 115
Регистрация: 19.01.2015
Сообщений: 524
24.09.2021, 07:03
Цитата Сообщение от Alexodiy Посмотреть сообщение
В цикле проверка по дате и если дата поста равна +20 дней с момента публикации
Нужно сразу получать посты с "дата поста равна +20 дней", а не получать все и в цикле проверять.

Так получит все посты у которых дата публикации равна минус 20 дней от текущей:
(плюс добавит в ответ эмейл и имя автора)
PHP
1
2
3
4
5
6
7
8
9
global $wpdb;
 
$query = " SELECT p.*, u.user_email, u.display_name FROM {$wpdb->prefix}posts p
LEFT JOIN {$wpdb->prefix}users u ON p.post_author = u.id
WHERE p.post_type = 'post' AND  p.post_status = 'publish' AND DATE(p.post_date) = CURDATE() - INTERVAL 20 DAY";
 
$results = $wpdb->get_results( $query );
 
print_r( $results );;
Если конечно я правильно понял какая дата нужна.
1
 Аватар для Alexodiy
6 / 6 / 2
Регистрация: 22.02.2017
Сообщений: 125
24.09.2021, 09:47  [ТС]
С произвольного типа получается получать надо. В принципе да, так лучше

Добавлено через 5 минут
Smls, а можно получать с определенной даты, например с сегодняшней 24.09.2021, а те посты которые были опубликованы ранее их не включать в обработку?
0
220 / 173 / 115
Регистрация: 19.01.2015
Сообщений: 524
24.09.2021, 10:04
Цитата Сообщение от Alexodiy Посмотреть сообщение
а можно получать с определенной даты, например с сегодняшней 24.09.2021
В примере получает посты за конкретную дату, CURDATE() - INTERVAL 20 DAY
24 - 20 = 04.09.2021, те что раньше или позже 4 сентября не попадут в выборку.
Или я что-то не так понял за какой период вам посты нужны? Так-то конечно можно и диапазон указать от/до. Но пояснения нужны по датам, которые нужны.
0
 Аватар для Alexodiy
6 / 6 / 2
Регистрация: 22.02.2017
Сообщений: 125
24.09.2021, 10:22  [ТС]
Smls, от 24.09.2021 примерно
0
754 / 578 / 120
Регистрация: 26.02.2019
Сообщений: 3,115
Записей в блоге: 3
24.09.2021, 10:27
Цитата Сообщение от Smls Посмотреть сообщение
Нужно сразу получать посты с "дата поста равна +20 дней", а не получать все и в цикле проверять.
Да, так правильнее, но не надо лезть в базу! Надо использовать WP_Query.
0
 Аватар для Alexodiy
6 / 6 / 2
Регистрация: 22.02.2017
Сообщений: 125
24.09.2021, 10:40  [ТС]
тоесть в выборку WP_Query заносить сразу условность на 20 дней?
0
754 / 578 / 120
Регистрация: 26.02.2019
Сообщений: 3,115
Записей в блоге: 3
24.09.2021, 12:25
Цитата Сообщение от Alexodiy Посмотреть сообщение
тоесть в выборку WP_Query заносить сразу условность на 20 дней?
Да.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.09.2021, 12:25
Помогаю со студенческими работами здесь

Вытащить все фото с постов/страниц, разложить по папкам с названием постов/страниц
Добрый день. Кто нибудь может помочь сделать такую штуку: Взять url всех изображений в каждой записи/страницы и физические файлы этих...

Запуск скрипта по крону
Как задать периодичность запуска скрипта по крону? Главное, чтобы крон работал после перезапуска системы.

Не работает файл по крону
Доброго вечера. У меня вот возникла такая проблема. Есть скрипт который парсит и записывает то что спарсил в файл txt. Когда запускаю его...

Field_collection удаление по крону
Добрый вечер уважаемые форумчане. Я как обычно к Вам с вопросом. Дело обстоит так...Есть field_collection. в нём 2 поля: цена и дата....

Запуск бота по крону
Всем привет. Нужен совет. Пробую написать телеграмм бот на основе https://github.com/php-telegram-bot/core Мой бот срабатывает когда...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru