Это то, что я удивляюсь некоторое время и решил спросить об этом.
У нас есть функция getmypid (), которая будет возвращать текущий идентификатор процесса скриптов. Есть ли какая-то функция, такая как
checkifpidexists () в php? Я имею в виду встроенное, а не какое-то пакетное решение.
А есть ли способ изменить pid скрипта?
Некоторые уточнения:
Я хочу проверить, существует ли pid, чтобы убедиться, что скрипт уже запущен, поэтому он больше не запускается, если хотите, запустите faux cron.
Причина, по которой я хотел изменить pid, заключается в том, что я могу установить pid сценария на очень высокое значение, например 60000 и жесткий код, значение которого позволяет выполнять этот сценарий только на этом pid, поэтому будет выполняться только 1 его экземпляр
EDIT ----
Чтобы помочь кому-либо еще с этой проблемой, я создал этот класс:
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;
}
}
и вы используете его так:
$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';
}