Hallo
ich habe ein problem und zwar will meine Website kein Cronjob erstellen
Also in der Datei lasse ich diese Zeilen ausführen.
und die ganze funktion steht in der Datei cronjob.php die auch included ist.
Diese Datei sieht so aus.
Und ja es funktioniert nicht Seite sagt ist alles ok gucke ich über putty cronjob -l dann steht da das keine cronjob gibs.
Kann mir einer Helfen?
MfG
Slipknoter6
ich habe ein problem und zwar will meine Website kein Cronjob erstellen
Also in der Datei lasse ich diese Zeilen ausführen.
PHP-Code:
$crontab = new Crontab();
$sexy = ''.$dateTime['time'].' '.$dateTime['date'].' * /var/www/virtual/tld-domain.de/htdocs/sh/stopserver.sh '.$_POST['port'].'';
$crontab->add(array($sexy));
Diese Datei sieht so aus.
PHP-Code:
<?php
/**
* @author Mark Wecke <mark.wecke@googlemail.com>
* @license free :P
*/
class Crontab {
/**
* Speichert die geparsten Einträge aller eingetragenen Cronjobs des Users
*
* @var array
*/
protected $rows = array();
public function __construct() {
$this->_parse();
}
/**
* Liest alle eingetragenen Cronjobs des Users aus und parst sie in ein Array
*/
protected function _parse() {
$rows = array();
exec('crontab -l', $rows);
foreach($rows AS $row) {
$this->rows[] = preg_split('/\s+/', trim($row), 6);
}
}
/**
* Entfernt alle Whitespaces aus dem Hinzugefügten Cronjob
* Wird auf alle Felder bis auf das Command Feld angewendet
*
* @see Cronjob::add()
* @param string $cell
* @return string
*/
protected function _sanitize($cell) {
return preg_replace('/\s+/', '', $cell);
}
/**
* Liefert alle Cronjobs als Array
*
* @return array
*/
public function getAll() {
return $this->rows;
}
/**
* Findet alle eingetragen Cronjobs die mit den Suchparameters übereinstimmen
* <dl>
* <dt>minute, hoer, dom(day of month), month, dow(day of week), command</dt>
* <dd>Sucht in dem entsprechenden Feld, find nur komplette übereinstimmungen</dd>
* <dt>commadSW</dt>
* <dd>Findet alle Einträge die mit dem übergebenen Wert anfangen</dd>
* <dt>commandPM</dt>
* <dd>Findet alle Einträge auf die der übergebene RegEx passt(muss mit delimiter übergeben werden)<br />Beispiel:<br />
* /# Comment ID1$/ - findet alle Einträge mit dem Kommentar '# Comment ID1' am Ende
* </dd>
* </dl>
* Beispiel:<br />
* <pre>
* $crontab = new Crontab();
* $crontab->find(array(
* 'hour' => 12,
* 'commandSW' => 'php '
* ));
* </pre>
* Findet alle Cronjobs die zwischen 12 und 12:59 aufgerufen werden und des Befehl mit 'php ' startet
*
* @param array[optional] $spec
* @return array
*/
public function find(array $spec=array()) {
$result = array();
foreach($this->rows AS $i => $row) {
if((!isset($spec['minute']) || $spec['minute'] == $row[0])
&& (!isset($spec['hour']) || $spec['hour'] == $row[1])
&& (!isset($spec['dom']) || $spec['dom'] == $row[2])
&& (!isset($spec['month']) || $spec['month'] == $row[3])
&& (!isset($spec['dow']) || $spec['dow'] == $row[4])
&& (!isset($spec['command']) || $spec['command'] == $row[5])
&& (!isset($spec['commandSW']) || $spec['commandSW'] == substr($row[5], 0, strlen($spec['commandSW'])))
&& (!isset($spec['commandPM']) || preg_match($spec['commandPM'], $row[5]))
) {
$result[$i] = $row;
}
}
return $result;
}
/**
* Entfernt alle Cronjobs die mit den Suchparameters übereinstimmen<br />
* gleiche Suchparameter wie Crontab::find() und zusätzlich 'row' damit kann gezielt eine Zeile gelöscht werden
*
* @param array $spec
* @return int Anzahl der gelöschten Zeilen
* @see Crontab::find()
*/
public function remove(array $spec) {
if(isset($spec['row'])) {
unset($this->row[$spec['row']]);
return true;
}
$rows = $this->find($spec);
foreach($rows AS $i => $row) {
unset($this->row[$i]);
}
return count($rows);
}
/**
* Benötigt ein sechs Spalten numerisches Array mit den Feldern: <br />
* Minute, Stunde, Tag im Monat, Monat, Tag der Woche, Befehl
*
* @param array $row
* @return boolean
*/
public function add(array $row) {
if(count($row) != 6) {
return false;
}
$command = array_pop($row);
$row = array_map(array($this, '_sanitize'), $row);
$row[] = $command;
$this->rows[] = $row;
return true;
}
/**
* Speichert alle Cronjobs in die Crontab Datei des Users
*
* @return boolean
*/
public function save() {
$file = tempnam(sys_get_temp_dir(), 'PHP_CRONTAB');
$handle = fopen($file, 'w');
foreach($this->rows AS $row) {
fwrite($handle, implode(' ', $row).PHP_EOL);
}
fclose($handle);
exec("crontab $file");
unlink($file);
$tmp = $this->rows;
$this->_parse();
return ($tmp === $this->rows);
}
}
?>
Kann mir einer Helfen?
MfG
Slipknoter6
Kommentar