[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Добавленя и удаленя cron job через php
dadli
Приветствую всем

уже два дня питаюс но не получилос ни как, моя задача такая: мне надо из php скрипта добавить cron job, а потом удалить именно етот job.
так как мне есть также другие cron-и (они добавлени из cpanel), мне надо именно етот крон удалить а не все джоби.

может кто нибудь покажет php код для добавленя и удаленя cron job ?

ос: linux.

спасибо огромное заранее.

_____________


когда чарли чаплин принимал участие в конкурсе: "клон чарли чаплинов", то чарли занимал третю позицию.

brevis
// добавляем маркер #mycommand в конец команды что бы "помечать" наши команды:
// 0 * * * * command_name #mycommand

// add 5 commands

for($i=1; $i<=5; $i++) {
addJob('0 * * * * command_name'.$i.' #mycommand');
}
echo getAllJobs();

// delete command_name3
deleteJob('0 * * * * command_name3 #mycommand');
echo getAllJobs();

/*-------------------------------------------------*/

function getAllJobs() {
return shell_exec('crontab -l');
}

function addJob($job) {
shell_exec('(crontab -l ; echo "'.$job.'") | sort - | uniq - | crontab -');
}

function deleteJob($job) {
$all_jobs = getAllJobs();
$all_jobs = preg_replace('/^'.preg_quote($job).'\n/Uim', '', $all_jobs);
shell_exec('echo "'.$all_jobs.'" | crontab -');
}


Результат работы:
{17:31}[2.1.1]~/tmp/cron ➭ php cron.php

0 * * * * command_name1 #mycommand
0 * * * * command_name2 #mycommand
0 * * * * command_name3 #mycommand
0 * * * * command_name4 #mycommand
0 * * * * command_name5 #mycommand

0 * * * * command_name1 #mycommand
0 * * * * command_name2 #mycommand
0 * * * * command_name4 #mycommand
0 * * * * command_name5 #mycommand


Disclaimer.
Свернутый текст
Это лишь демонстрация принципа работы. В реальных условиях нужно как-то "фильтровать" команды для обеспечения безопасности. Если в результате использования этого кода у вас отформатируется hdd -- вся ответственность лежит на вас.
А также наверное потребуется экранировать команды чем-то вроде escapeshellarg().


_____________
Чатик в телеге
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.