Пропуск повторного вызова функции из скрипта php.
session_id('cron'); //используем именованную сессию, имя файла сессии sess_cron
session_start();
if ($this->session->has(__METHOD__)) {
$attemptCount = intval($this->session->get('attemptCount-' . __METHOD__));
$this->session->set('attemptCount-' . __METHOD__, ++$attemptCount);
printf("Run at: %s\r\n", date('c', intval($this->session->get(__METHOD__))));
return;
} else {
$this->session->set(__METHOD__, $_SERVER["REQUEST_TIME_FLOAT"]);
$this->session->set('attemptCount-' . __METHOD__, 1);
session_write_close(); // закроем сессию, снимем с нее блокировку иначе следующие скрипты не смогут ничего прочитать и будут ждать в очереди, а нам нужен другой эффект
}
sleep(300); //тут что-то делаем
//снимаем блокировку
session_id('cron');
session_start();
$this->session->remove(__METHOD__);
если хотим аналог мьютекса, то достаточно только session_id(‘cron’) и все, все скрипты в очереди на ожидание ресурса — файла сессии