@achill:
Pokaż może jak sprawdzić z poziomu skryptu A czy skrypt B zadeklarował jakąś zmienną. Chętnie bym to sobie zobaczył.
@batman:
A co w przypadku, gdy skrypt po drodze się wysypie i nie zdąży zdjąć założonej przez siebie "blokady"? Edit: Aj, nie doczytałem - wspominasz o timeoucie.
Ja to realizuję za pomocą zakładania blokad na pliki. Jeśli blokada jest założona to znaczy, że proces pracuje. W przypadku wysypania się skryptu z dowolnego powodu blokada samoczynnie się zdejmuje. Oto klasa Process:
<?php
/**
* Klasa monitorująca działanie procesu.
*
* @author Michał "phpion" Płonka
* @package Process
*/
class Process {
/**
* Plik, na podstawie którego określany jest status działania procesu.
*
* @var string
*/
protected $file;
/**
* Uchwyt pliku.
*
* @var resource
*/
protected $handler = NULL;
/**
* Konstruktor klasy.
*
* @param string $file Plik, na podstawie którego określany jest status działania procesu.
*/
public function __construct($file) {
$this->file = APPPATH.'process/'.(string)$file;
$this->handler = fopen($this->file, 'w'); }
/**
* Rozpoczyna działanie procesu.
*
* Nakłada blokadę na plik.
*
*/
public function start() {
$this->handler = fopen($this->file, 'w'); }
flock($this->handler, LOCK_EX
+ LOCK_NB
); }
/**
* Kończy działanie procesu.
*
* Zdejmuje blokadę z pliku.
*
*/
public function stop() {
flock($this->handler, LOCK_UN
); }
$this->handler = NULL;
}
/**
* Sprawdza czy proces jest uruchomiony.
*
* @return bool Zwraca TRUE gdy proces jest uruchomiony, FALSE w przeciwnym wypadku.
*/
public function is_running() {
return !flock($this->handler, LOCK_EX
+ LOCK_NB
); }
const VERSION = '1.0';
}
Klasa jest napisana pod Kohanę więc zmodyfikuj się konstruktor by przyjmował pełną ścieżkę, a nie tylko nazwę pliku. Have fun