PHP 设置 crontab.
$m = 1;
$h = 2;
$dom = 1;
$mon = 1;
$dow = 1;
$command = 'ls > /home/roofe/log1';
//add_crontab_job($m, $h, $dom, $mon, $dow, $command);
edit_crontab_job($m, $h, $dom, $mon, $dow, $command);
//delete_crontab_job($command);
function add_crontab_job($m, $h, $dom, $mon, $dow, $command){
edit_crontab_job($m, $h, $dom, $mon, $dow, $command);
}
function edit_crontab_job($m, $h, $dom, $mon, $dow, $command){
$cron_command = _construct_crontab_job_command($m, $h, $dom, $mon, $dow, $command);
$f=popen("crontab -e","w");
_delete_crontab_job($f, $command);
_add_crontab_job($f, $cron_command);
_save_and_exit_from_vim($f);
pclose($f);
}
function delete_crontab_job($command){
$f=popen("crontab -e","w");
_delete_crontab_job($f, $command);
_save_and_exit_from_vim($f);
pclose($f);
}
function _construct_crontab_job_command($m, $h, $dom, $mon, $dow, $command){
return $cron_command = "$m\t$h\t$dom\t$mon\t$dow\t$command";
}
function _delete_crontab_job($f,$pattern){
$pattern = str_replace('/', '\/', $pattern); //escape the '/' char
fputs($f,":g/".$pattern."/d"); //delete the matched line
fputs($f,"\n");
}
function _add_crontab_job($f,$command){
fputs($f,"G"); //jump to the last line
fputs($f,"o"); //make a new line and enter the edit mode
fputs($f,$command);
}
function _save_and_exit_from_vim($f){
fputs($f,chr(27)); //jump out the edit mode
fputs($f,chr(27)); //vim's command_mode and visual_mode need double tab click
fputs($f,":wq\r"); //save and exit
}