CLI-PHP-процесс синглтон.

cDLEON

Онанист РНРСlub
CLI-PHP-процесс синглтон.

Думаю из темы понятно, что я имею ввиду - требуется, что бы было не возможно запустить ещё один процесс, пока не отработал предыдущий...
Так вот. Как лучше всего это сделать?
Пока на уме только создание временного файла и удаление его после завершения работы скрипта.
НО. ПХП не гарантирует удаление оного...(Процесс убили kill -9, сервак перезагрузили и т.д.) Посему этот вариант (на данный момент, для меня не подходит)
Что посоветуете?
 

Wicked

Новичок
не временный файл, а pid file
другие процессы смогут посмотреть, есть ли вообще процесс с этим pid, и если есть, то тот ли самый это скрипт.
 

cDLEON

Онанист РНРСlub
В общем не знаю, может быть имеются (в плане телодвижений процессора) и лучшие решения, но я придумал вот такое вот оригинальное :))
PHP:
<?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();
		}
	}
}
?>
-~{}~ 12.06.09 16:41:

не временный файл, а pid file
другие процессы смогут посмотреть, есть ли вообще процесс с этим pid, и если есть, то тот ли самый это скрипт.
Геморно работать с коммандой строкой (в плане кроссплатформенности) 8))
А с сокетами только две проблемы - файрволл и неустановленная эта либа :))
 
Сверху