Недавно появилась задача реализовать пхп-скрипт одиночку (возможен запуск только одной копии этого скрипта.)
Пришёл вот к такому вот оригинальному(на мой взгляд) решению, без капли изврата:
Требует только установленной библиотеки sockets+СТО_ПРОЦЕНТНО_свободного_номера_порта.
Пришёл вот к такому вот оригинальному(на мой взгляд) решению, без капли изврата:
<?php
class cli_singleton {
protected $sock;
protected $port;
public function __construct($port) {
$this->set_port($port);
$this->sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
}
protected function set_port($port) {
$this->port=$port;
}
public function lock() {
return socket_bind($this->sock, 'localhost', $this->port);
}
public function unlock() {
socket_close($this->sock);
$this->sock=NULL;
}
public function __destruct() {
if($this->sock) {
$this->unlock();
}
}
}
?>Требует только установленной библиотеки sockets+СТО_ПРОЦЕНТНО_свободного_номера_порта.