Php блокировка файла flock
127 UAHЕсть простой код на php
$iniq_id_name_files = "tmp_lock_set_semafore_translate/".$p.".pid";
$set_semafore_pointer = set_semafore($iniq_id_name_files);
...
выполняем код
...
remove_semafore($set_semafore_pointer,$iniq_id_name_files)
function set_semafore($iniq_id_name_files)
{
$mutex = fopen($iniq_id_name_files, 'w');
flock($mutex, LOCK_EX + LOCK_NB) or die("<font color=red>Копия скрипта уже выполняется либо ошибка записи в файл семафора! Выходим</font>");
fwrite($mutex, php_sapi_name()." ".getmypid()." ".getmygid()." ".getmyuid()." ".get_current_user()." ".getmyinode()." ".getlastmod()." ".date("Y-m-d H:m:s",time()));
return $mutex;
}
function remove_semafore($pointer,$iniq_id_name_files='')
{
flock($pointer, LOCK_UN);
if(strlen($iniq_id_name_files) > 0) unlink($iniq_id_name_files);
}
При этом оказалось, что появляются файлы заблокированные на всегда. Т.е. скорее всего если процесс был аварийно остановлен и не успел освободить семафор, то он навсегда остается занятым при таком подходе.
Как корректно в скрипте решить проблему освобождения семафора при аварийном завершении?
-
Перед запуском запускайте функцию удаления.
-
напишите это в блоке try catch
-
Актуальные фриланс-проекты в категории PHP
Модули для сайта на Laravel
4000 UAH
Модуль доставки и оплаты для сайта https://novabook.top/ (Botble CMS / Laravel) Добавить в checkout удобные способы доставки и оплаты (включая рассрочку), по аналогичному стилю и удобству, как на сайте mirson ua.Доставка (обязательно) Новая Почта Отделение Почтомат Курьер на… Javascript и Typescript, PHP ∙ 2 минуты назад ∙ 1 ставка |
Нужна интеграция KeyCRM → ПРРО Кашалот |
Разработка 2 SEO-ориентированных сайтов по продаже запчастей (квадроциклы и спецтехника)Разработка двух специализированных сайтов по продаже запчастейОбщая информация Необходимо разработать два специализированных сайта: Запчасти для квадроциклов, UTV, SSV и другой подобной техники. Запчасти для специальной техники. Существующий сайт компании:… PHP, Веб-программирование ∙ 4 дня 6 часов назад ∙ 77 ставок |
Разработка веб-сайта WordPress
1002 UAH
|
Парсер expireddomains.net
5000 UAH
Нужен парсер expireddomains.net на сайте нужно сначала залогиниться, проблема в том что блокирует ИП при попытке парсить данные, нужно парсить тематические домены по списку ключевых слов, кто не уверен в своих силах не пишите PHP, Веб-программирование ∙ 9 дней 6 часов назад ∙ 53 ставки |