Questo è qualcosa che mi sono chiesto per un po 'e ho deciso di chiedere al riguardo.PHP Check Process ID
Abbiamo la funzione getmypid() che restituirà l'id del processo degli script corrente. Esiste qualche tipo di funzione come
checkifpidexists() in php? Intendo uno integrato e non una soluzione di script batch.
E c'è un modo per modificare un pid di script?
Alcuni chiarimenti:
voglio verificare se un pid esiste per vedere se lo script è già in esecuzione in modo da Dont Run ancora una volta, job cron finto, se vuoi.
La ragione per cui volevo cambiare il pid è che posso impostare lo script pid su qualcosa di veramente alto come 60000 e il codice rigido che valore in modo che questo script possa essere eseguito solo su quel pid in modo che solo 1 istanza di esso venga eseguita
EDIT ----
per aiutare chiunque altro con questo proplem, ho creato questa classe:
class instance {
private $lock_file = '';
private $is_running = false;
public function __construct($id = __FILE__) {
$id = md5($id);
$this->lock_file = sys_get_temp_dir() . $id;
if (file_exists($this->lock_file)) {
$this->is_running = true;
} else {
$file = fopen($this->lock_file, 'w');
fclose($file);
}
}
public function __destruct() {
if (file_exists($this->lock_file) && !$this->is_running) {
unlink($this->lock_file);
}
}
public function is_running() {
return $this->is_running;
}
}
e si utilizza in questo modo:
$instance = new instance('abcd'); // the argument is optional as it defaults to __FILE__
if ($instance->is_running()) {
echo 'file already running';
} else {
echo 'file not running';
}
pcntl_fork() non cambierà il processo corrente pid! La funzione pcntl_fork() crea un processo figlio che differisce dal processo genitore solo nei suoi PID e PPID. Si prega di consultare la pagina man di fork del proprio sistema (2) per dettagli specifici su come funziona la forcella sul proprio sistema. – ennuikiller
hmm, speravo in un modo più trasversale di verificare se esisteva un pid :( – Ozzy
Con la mia modifica, ho accennato che non penso che voglia pcntl_fork(), né otterrebbe una scelta di pid –