Я пытаюсь написать плагин Wordpress, который автоматически публикует сообщение в блоге в определенное время дня. Например, прочтите кучу RSS-каналов и опубликуйте ежедневный дайджест всех новых записей.
Есть плагины, которые делают что-то похожее на то, что я хочу, но многие из них полагаются на задание cron для автоматического планирования. Я сделаю это, если придется, но я надеялся, что есть способ получше. Заставить типичного пользователя Wordpress добавить задание cron не совсем удобно.
Есть ли хороший способ запланировать задачу, которая запускается из подключаемого модуля Wordpress? Необязательно запускать в нужное время.






vBulletin использует своего рода систему Pseudo-Cron, которая в основном проверяет расписание при каждом доступе к странице и запускает все процессы, которые должны быть выполнены.
Прошло некоторое время с тех пор, как я работал с Wordpress, но я думаю, что что-то вроде этого должно работать, если оно запускается при каждом просмотре страницы.
Я думаю, что лучший способ сделать это - использовать псевдо-cron. Я видел его несколько раз, и хотя он не был точным по времени, он должен делать то, что вам нужно. Поскольку в Wordpress index.php - это первое, на что всегда обращаются в зависимости от настроек в .htaccess, создайте файл с именем pseudo-cron.php, сбросьте его в корневой каталог, а затем потребуйте его один раз из индекса. Всякий раз, когда кто-то заходит на сайт, он запускается, и вы можете использовать его для запуска сценария и проверки необходимости создания еще одного ежедневного дайджеста в зависимости от времени суток и времени запуска предыдущего дайджеста.
псевдо-cron хорош, но у него есть две проблемы:
1. Для выполнения требуется, чтобы кто-то «ударил» по блогу. Сайты с небольшим объемом потенциально могут иметь широкий диапазон времени выполнения, поэтому не указывайте конкретное время.
2, обработка происходит до загрузки страницы. Так что, если время выполнения происходит и у вас много записей в cron, вы потенциально расстраиваете посетителей, предоставляя им нестандартный опыт.
Только мои 2 цента :-)
Я думаю, ты ошибаешься насчет №2. WordPress генерирует асинхронный вызов curl () для запуска задания, поэтому для посетителей нет заметной задержки. Если вы хотите обходной путь №1, вы можете настроить задание cron на `wget example.com/wp-cron.php '.
Если бы вы сделали его зависимым от каждой попытки спама в комментариях, вы могли бы иметь точность до миллисекунды. :-)