Ankündigung

Einklappen
Keine Ankündigung bisher.

Cronjob erstellen

Einklappen

Neue Werbung 2019

Einklappen
Dieses Thema ist geschlossen.
X
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Cronjob erstellen

    Hallo
    ich habe ein problem und zwar will meine Website kein Cronjob erstellen

    Also in der Datei lasse ich diese Zeilen ausführen.
    PHP-Code:
    function timestamp_mysql2german($date) {
            
        
    $stamp['min']    =    sprintf("%02d",
                                 
    substr($date142));
                                                
        
    $stamp['std']    =    sprintf("%02d",
                                 
    substr($date112));
                                 
        
    $stamp['days']    =    sprintf("%02d",
                                 
    substr($date82));
                                                
        
    $stamp['month']    =    sprintf("%02d",
                                 
    substr($date52));
        
        return 
    $stamp;
        }
        
    $dateTime    =    timestamp_mysql2german($ende);
        
    $crontab = new Crontab();
        
    $crontab->add(array($dateTime['min'] , $dateTime['std'] , $dateTime['days'] , $dateTime['month'] , "*" "/var/www/virtual/tld-domain.de/htdocs/sh/stopserver.sh ".$_POST['port'])); 
    und die ganze funktion steht in der Datei cronjob.php die auch included ist.

    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], 0strlen($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($handleimplode(' '$row).PHP_EOL);
            }
            
    fclose($handle);
            
    exec("crontab $file");
            
    unlink($file);
            
    $tmp $this->rows;
            
    $this->_parse();
            return (
    $tmp === $this->rows);
        }
    }

    ?>
    Und ja es funktioniert nicht Seite sag auch das ein fehler ist sehe aber kein gucke ich über putty cronjob -l dann steht da auch keine cronjob gibs.

    Kann mir einer Helfen?

    MfG

    Slipknoter6


  • #2
    Es hat einen Grund, warum nikosch deinen Thread geschlossen hat.
    http://www.php.de/php-fortgeschritte...uncements.html
    Bevor du keine Fehlermeldungen posten kannst, kann dir keiner Helfen.
    Google: "PHP debugging"
    Zitat von nikosch
    Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

    Kommentar


    • #3
      da war docch eben noch einer bei den anfängern.
      hab ich jetzt haluz?

      Kommentar


      • #4
        Hm ja es ist ja das komische

        Hatte zwar ein klammerfehler drinne aber jetzt geht die siete aber der befehl nicht so ganz

        Errors gibs keine kann somit keine posten

        Und üvber putty crontab -l sag er auch das keine vorhanden sind

        Was mache ich denn dann falsch

        Ich habe ja in Header dieses drinne
        error_reporting(E_ALL);
        ini_set('display_errors', 'On');

        Kommentar


        • #5
          Mit dem richtigen User eingeloggt über putty? Jeder User hat eigene Cronjobs.
          Zitat von nikosch
          Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

          Kommentar


          • #6
            Was mache ich denn dann falsch
            Könnte ich Dir sagen, aber Du hast jetzt sowieso erst mal ne Woche Urlaub.

            [MOD: Geschlossen]
            --

            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
            Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


            --

            Kommentar

            Lädt...
            X