Отложенный постинг

252
20 февраля 2018, 07:46

Доброго времени суток. Подскажите как создается отложенный постинг на примере того же сайта Вконтакте. Cron программно задать нельзя, цикл не вариант, если сделать циклом и к примеру 80 человек выбрали одно и тоже время то интервал собьется пока дойдет до 80 пользователя. Задача сделать на сайте следующее. Пользователь выбирает дату и(или) время, например каждые 5 минут, выбирает свое сообщество. И по истечении времени ему в сообщество должен публиковаться пост.

Answer 1

Предупреждение - костыль адского уровня!

Если правильно понял вопрос, требуется одновременно, без особых задержек, постить много постов через API (по сути делать запросы). Видится мне один очень косой, костыльный и не идеальный, но все же выход. Создать каких 100 cron-задач, запускающих один и тот же скрипт, а скрипт в свою очередь делает следующее:

  • Запрашивает 1 пост, из таблицы отложенных постов
  • Смотрит, не захватил ли этот пост другой экземпляр скрипта (создать какой-нибудь флаг в таблице, либо держать информацию о таких флагах для каждого поста в общем кеше, например при помощи memcached или redis)
  • Если пост не захвачен - пометить его как "захваченный" и начать постить его
  • Пометить как "выполнено", чтобы пост снова не попался скрипту.

По идее должно получится что-то вроде параллельного выполнения. Таким образом можно будет без особых задержек постить около 100 постов. Если выше - конечно возникнет задержка (которая будет равна интервалу работы крона). но это все только в теории. Сам никогда подобного не делал, и не знаю каким будет поведение такого костыля.

READ ALSO
Выборка и сортировка из 2х таблиц через DISTINCT UNION ORDER BY

Выборка и сортировка из 2х таблиц через DISTINCT UNION ORDER BY

Доброго времени! Есть две одинаковые таблицы mesages и achuvedoms с полями:

256
Можно ли как-то задать глобольную переменную в **php.ini**?

Можно ли как-то задать глобольную переменную в **php.ini**?

Можно ли как-то задать переменную в phpini так чтобы везде во всех php скриптах можно было её использовать как обычную $str22 например? (инклуд не подходит,...

188
Проблема с передачей элемента массива в сессию wordpress

Проблема с передачей элемента массива в сессию wordpress

Всем приветПишу php функцию на вордпресс

230
Как передать AJAX'ом данные из DatePicker в контроллер yii2

Как передать AJAX'ом данные из DatePicker в контроллер yii2

DatePicker создается следующим кодом:

220