Ответ от Steve Folly Я чувствую себя более эффективным.
Вот еще одно легкое и менее эффективное решение:
В решении используется remove_copy_if для копирования значений, которые мы хотим в новый контейнер, затем меняет содержимое исходного контейнера на содержимое нового:
std::map<int, std::string> aMap;
...
//Temporary map to hold the unremoved elements
std::map<int, std::string> aTempMap;
//copy unremoved values from aMap to aTempMap
std::remove_copy_if(aMap.begin(), aMap.end(),
inserter(aTempMap, aTempMap.end()),
predicate);
//Swap the contents of aMap and aTempMap
aMap.swap(aTempMap);
Я не совсем уверен, что вы подразумеваете под «запускать мои собственные задачи cron вручную». В частности, для cron вам нужен доступ к crontab
, который они могут контролировать, так как они являются их серверами. Если у вас есть другой способ сделать это, это, вероятно, будет хорошо, но имейте в виду, что ваше приложение не привязано к определенному серверу при работе под Heroku и что сервер будет изменяться между исполнениями.
Кроме того, если они не изменили его с тех пор, как я проверил последний раз, вы можете запускать ежедневные задания cron бесплатно, но почасовая оплата стоит $ 3 / мес.
EDIT: Да, ежедневные кроны Бесплатно. См. [D0] http://addons.heroku.com/ .
Если вы установите на компьютер Heroku gem , вы можете запустить свои задачи cron вручную следующим образом:
$ heroku rake cron (in / disk1 / home / slugs / xxxxxx_aa515b2_6c4f / mnt) Запуск cron в 2010/04/25 10:28:54 ...
Это будет выполнять тот же самый код, что и ежедневный / на делает; т. е. для этого, ваше приложение должно иметь Rakefile с задачей cron
, например:
desc «Выполняет задачи обслуживания cron». Задача: cron do puts «Running cron at # {Time.now.strftime ('% Y /% m /% d% H:% M:% S')} ..." # TODO: ваш cron-код заканчивается здесь
Теперь добавьте команду heroku rake cron
в crontab на любом вашем сервере Unix или даже прямо на crontab вашего персонального компьютера
, если вы используете Linux или Mac OS X, и вы можете планировать задания cron для своего приложения Heroku по своему усмотрению и без взимания платы за него.
Да, я успешно использовал задание cron на моем локальном сервере, которое по существу запускает
$ heroku rake & lt; rake task & gt;
в любые промежутки времени, которые я требовал. Я использовал как на осинах, так и на бамбуковых стеках.
Если вы хотите иметь запланированные задания, вы также можете использовать http://guardiano.getpeople.in , что является бесплатным сервисом (для 10 заданий) для планирования заданий.
Вам просто нужно настроить конечную точку HTTP в своем приложении, чтобы получать уведомления о событиях в POST или GET, а также вы можете установить некоторые дополнительные параметры для предотвращения неавторизованных действий.
Итак, вы установили работа в Guardiano, которая будет cal http://yourapp.com/youraction и оставить «минуты» пустым, если вы хотите, чтобы действие выполнялось один раз в будущем или задано в минутах, к тому, что вы хотите запустить действие каждые X минут. Таким образом, вам нужно создать свою конечную точку для своего приложения, и когда этот EP называется, вы что-то выполняете.
Итак, ваше приложение может спать, и вам не нужно тратить деньги и время на создание рабочих мест и заботиться о том, чтобы они работали правильно.
ИМХО, если вам нужно что-то быстро для MVP или вам нужно настроить множество заданий для разных приложений, чем бесплатный сервис вроде того, где вы действительно можете использовать внешние функции cronjobs.
Был такой же Heroku Addon, что и Temporize, но я не уверен, что все еще жив и работает
Вы также можете просто установить gem как rufus-scheduler, если вы используете приложение rails и планируете настройку таким образом. Я не знаю, по какой-то причине это плохая практика, но это то, что я делаю с моим приложением, и, похоже, это работает нормально.