2015-07-06 1 views
0

В настоящее время я работаю на довольно большом чисто динамическом сайте, который содержит различную информацию, срок действия которой истек. Раньше мне не приходилось беспокоиться об истечении срока действия, потому что оно обрабатывалось при входе пользователя (при необходимости могут выполняться различные проверки, чтобы, если это необходимо, заканчивать зарегистрированные данные пользователя), но с нашей базой увеличения и бездействием пользователей данные в db стареют. Обычно это не проблема, но старые данные влияют на остальные функции/функциональность сайтов (реализованы функции системы на основе точек, функции создания команды и т. Д.). Все данные, хранящиеся в базе данных, имеют таймер истечения срока действия, поэтому все, что мне нужно сделать является мягким - удалите данные с помощью php-скрипта, но я не хочу запускать это на загрузку страницы (я хочу избежать замедления загрузки пользовательской страницы)Внедрение системы фоновой обработки для обновления/управления обновлениями/резервными копиями приложений

Какие альтернативы доступны в стороне от cronjobs. Я хочу иметь возможность настраивать и управлять фоновыми службами через php, поэтому мне не нужно редактировать/создавать клоны каждый раз, когда мне нужно что-то новое, и т. Д.

В идеале я ищу или пытаюсь реализовать систему что позволит мне вставить строку db с определенными инструкциями (очередь для определенного обновления), и она будет обрабатываться на бэкэнд. Мне нужно/нужно как можно скорее обновить данные, чтобы избежать проблем, с которыми мы сталкиваемся сейчас. Этот фоновый процессор в конечном итоге будет обрабатывать более сложные задачи, такие как автоматическое планирование событий на сайте (турнирах) или автоматическое создание скобок для этих турниров. Вся помощь приветствуется!

ответ

0

Вы можете попробовать MySQL event scheduler, чтобы вы могли начать SQL скрипт, который будет повторно запускать каждые х дней:

CREATE EVENT `delete_old_data` 
ON SCHEDULE schedule 
ON COMPLETION NOT PRESERVE 
ENABLE 
DO BEGIN 
    -- event body, something like delete all rows older than 5 days 
END; 

Чтобы быть честным, чтобы сделать более сложные события, как генерировать «сайт события» это выглядит как вы должны использовать cronjob. Есть ли причина, по которой вы не можете это использовать? Я уверен, что если вы объясните своему хостинг-провайдеру, что вам нужен cronjob и покажите им код, который вы будете использовать, он включит этот параметр в вашей учетной записи. (большинство хостов должно иметь это уже включено)

0

Существует несколько подходов, но ни один из них не идеален.

CRONJOBS

Вы указали, что вы не хотите, чтобы использовать их. Но если ваша основная забота о cronjobs - управление crontab, вы можете настроить только одну минуту-минуту PHP cron, которая затем может запускать различные задачи с разными разрешениями. Таким образом вы можете полностью управлять фоновыми службами через PHP. Основной недостаток заключается в том, что вы не можете выполнять свои фоновые задачи параллельно.

Gearman РАБОТНИКОВ

Вы также можете использовать программное обеспечение, 3 участника, как Gearman. Gearman позволяет вам писать так называемых работников (ваши фоновые сервисы) на любом языке, который вам нравится (поддерживается PHP, а также C++, java и многие другие). Эти работники ведут себя как бесхитростные функции, которые могут быть вызваны из любого места вашего кода с помощью gearman api. Вам не нужно переносить результат, просто вызвать функцию и забыть. Это будет сделано в фоновом режиме. Также планирование задач - это встроенная функция редуктора.

Другое программное обеспечение, которое вы можете использовать, - Rabbit MQ или любая другая система сообщений.

NATIVE PHP АСИНХРОННЫХ ФУНКЦИИ

Новый PHP7 принесет родную PHP асинхронного программирования. Вы сможете отделить свой PHP-скрипт и обработку запросов HTTP, немного как в node.js. Ваш скрипт сможет работать все время, делать какие-то фоновые вещи любым способом и обрабатывать http-запросы, подобные событиям в другом процессе. Это, вероятно, лучший вариант для вас, если вы можете подождать до даты выпуска.

Мой ответ охватывает только те решения, которые я использовал лично. Возможно, есть и другие способы достижения вашей цели, поэтому продолжайте искать!

+0

Я буду развертывать это приложение на различных сайтах, как на клиенте, так и на моем собственном. Поэтому я искал альтернативу php для реализации. Я не знаю, будет ли у всех клиентов доступ к cron, и я пытаюсь сделать это так же просто, как копирование файлов и обновление простых учетных данных, таких как db и т. Д. Таким образом, я могу ограничить сумму, которую я или другие люди должны сделать только для установки. (У меня есть планы на будущее для автоматического развертывания сценария), на данный момент я изучал использование ajax, чтобы просто вызвать URL-адрес, который будет искать db для запланированных задач или маркеров. Не уверен, что это плохой подход. – ICJ

Смежные вопросы