(PERL) Согласование скриптов

ыыы
Дата: 22.08.2006 20:34:55
На сервере есть 2 Perl-скрипта, работающие с БД.
Первый скрипт вызывается пользователями и читает/заносит данные в БД. Запускается он ОЧЕНЬ часто.
Второй запускается автоматически (CRON) каждые 15 минут.

Теперь вопрос: может ли быть такая ситуация, что первый скрипт будет находиться в процессе работы (допустим, выполнит 5 SQL-команд, а 10 команд -ещё нет), а в это время запустится второй скрипт (CRON).

Если да - то как это предотвратить? Потому, что если первый скрипт работу до конца не закончит, данные в БД будут неправильными, и второй скрипт будет работать с ошибками.

Короче, что делать?
Anjey aka PM
Дата: 22.08.2006 22:52:50
Думаю вам подойдет использование файл-локов.

Процессы которые обслуживают клиентов (читают/пишут и запускаются часто) получают шаред-лок на файл.
Процесс который работает по крону получает эксклюзивный лок на файл.

При попытке получить эксклюзивный файл-лок все попытки получить шаред-лок блокируются до момента пока эксклюзивный лок не будет получен а затем освобожден. Эксклюзивный лок предоставляется только когда все шаред-локи на файл освобождены.

Смотреть тут
Anjey aka PM
Дата: 22.08.2006 22:56:05
еще тут гляньте

Да и чуть не забыл сказать: если СУБД поддерживает транзакции используйте ихи не пишите костыли!
g613
Дата: 22.08.2006 22:56:38
...либо воспользоваться транзакциями БД, если они поддерживаются...