20
Ноя

Выполнение только одной копии скрипта php, убиваем при запуске старый

Есть ситуация, когда вы запускаете какой либо скрипт по cron в фоне, например, раз в час, но он может не успеть выполнится, а запуск 2й копии может натворить много бед.
Есть такое решение, получаем pid запущенного уже процесса с таким же именем и убиваем его при запуске этого же скрипта повторно.

$pid = getmypid();
$path = $_SERVER['PHP_SELF'];
$file_ex = basename($path);
exec("ps ax | grep $file_ex | grep -v grep | grep -v $pid | awk '{print $1}'", $output_pid);
if(isset($output_pid[0])){
	for($i = 0; $i < count($output_pid); ++$i) {
		exec("kill $output_pid[$i]");
	}
}

Если вы будете использовать подобную конструкцию в нескольких файлах cron одновременно, нужно чтобы файлы php были с разными названиями.

Обратная связь

    The average number of adverse effects was 3. T max is 23 minutes in females and 32 minutes in males. What other drugs will affect doxercalciferol Viagra natural sin receta. Archived from the original on 2009-08-14.

    Talk to your doctor before using this form of cefadroxil if you have diabetes. What should I tell my healthcare team before starting CABLIVI? There is no FDA guidance on the use of Tetracycline (oral) with respect to specific gender populations https://www.apotheke-rezeptfreie.com/. Opper K, Uder S, Song K Development of Heterogeneous and Homogeneous Platforms for Rapid Analysis of DNA-Protein Interactions.