Ограничение работы скрипта в один поток
Потребовалось мне сделать ограничение работы кол-ва копий скрипта в единицу времени. Для этого у меня, есть свой скрипт, который использует проверку существования файла, и его удаление при окончании работы скрипта, функцией, которую задаем через register_shutdown_function.
Но вот нашел ещё одно интересное решение, чем спешу поделиться со всеми. Оно использует возможность блокировки файла, до окончания работы с ним:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php function RunLock($lockFile, $exitText='Script is already running. Exiting..') { $fp = fopen($lockFile, 'w'); if (flock($fp, LOCK_EX | LOCK_NB)) // если смогли заблокировать файл, возвращаем указатель return $fp; else // если не смогли заблокировтаь файл (он уже заблокирован), выходим die($exitText); } // обязательно записываем возвращаемое значение в переменную иначе php освободит блокировку $rl = RunLock('r.lock'); // делаем паузу в 60 секунд, чтобы убедится что скрипт работает sleep(60); // ?> |
Author: | Tags: /
| Rating:
Leave a Reply