Задать вопрос

Как выполнить запрос select и update с минимальной задержкой?

В общем задача:
Есть обработка данных, т.е. запрос к БД(с лимитом 100), потом некоторые операции с записями, update их. И что б не трогало их - присваивается ключ.
Так вот, если крон запустится и не успеет обработать все 100 записей, запускается следующий и начинают творить ад - некоторые строки считает дважды. Вначале один крон, потом другой. Хотя первый уже посчитал и все ок. Можно делать проверку при финальном запросе на upgrade, но тогда снижаем скорость - вначале все посчитается, а потом окажется, что считать не надо было.

Как сделать, что б при select получать ID и тут же присваивать ключ всем 100, а далее уже по очереди работать с этими записями?
Или как сделать, что б при работе кронов не создавался этот ад с данными?
  • Вопрос задан
  • 294 просмотра
Подписаться 1 Оценить Комментировать
Ответ пользователя entermix К ответам на вопрос (5)
@entermix
Используйте транзакции

Блокируйте повторные запуски скрипта, если он уже/все еще в работе:
if (!flock($fh = fopen(__FILE__, 'r'), LOCK_EX | LOCK_NB)) die('Script is already running!');
Ответ написан
Комментировать