Michael W.: Cronjobs und PHP

Hallo,

soweit kein problem, aber so wies aussieht kann ein cronjob keine schleifen innerhalb einer php-datei ausführen.
ist das problem bekannt?

MfG
Michael W.

  1. Hallo,

    soweit kein problem, aber so wies aussieht kann ein cronjob keine schleifen innerhalb einer php-datei ausführen.
    ist das problem bekannt?

    Mir nicht. Habe mehrere cronjobs mit PHP-Skripten laufen, auch mit Schleifen (for,foreach) und ohne Probleme.

    Henk

    1. OK, aber DatenBank-Connects funktionieren bei mir nicht!
      ich bin gerade am austesten wodran das leigt. zuerst dachte ich das das an den includes liegt - tut es aber nicht. ich bekomme einfach keinen connect hin einen einfachen connect.

      <?php

      Cron job

      ############ test2 - dbconnect #################
      $host = 'localhost';
      $user = 'xx'; //geheim
      $pass = 'xx'; //noch geheimer
      $db = $user;
      $table = 'test2';

      $link = mysql_connect($host, $user, $pass);
      mysql_select_db($db, $link);
      $result = mysql_query("SELECT * FROM $table");

      $t = date(d);
      $mo = date(m);
      $j = date(y);
      $st = date(H);
      $mi = date(i);
      $time = "$t.$mo.$j ($st:$mi)";

      $a = "1";
      $b = "djwoelk";
      $c = "test";
      $d = $time;
      $e = "none";
      $f = "ja";
      $query = "insert into test2 (a,b,c,d,e,f) values('$a','$b','$c','$d','$e','$f')";
      mysql_query($query) or die("MySQL-Fehler beim hinzufügen");

      mysql_close($link);
      ###############################################
      ?>

      wenn ich es von hand ausführe gehts.
      ist _das_ problem evtl. bekannt?

      MfG
      Michael W.

      1. Hi!

        wenn ich es von hand ausführe gehts.
        ist _das_ problem evtl. bekannt?

        Nee. wie wär's, wenn Du Dir mal eventuelle Fehlermeldungen zumailst. Soll schon häufiger geholfen haben ;-)

        Henk

        1. Nee. wie wär's, wenn Du Dir mal eventuelle Fehlermeldungen zumailst. Soll schon häufiger geholfen haben ;-)

          wie denn?

          1. Nee. wie wär's, wenn Du Dir mal eventuelle Fehlermeldungen zumailst. Soll schon häufiger geholfen haben ;-)

            wie denn?

            z.B. kannst Du alle Funktionen in if-schleifen aufrufen, falls diese FALSE zurückgeben, kannst Du Dir eine entsprechende Meldung per mail() zukommen lassen, dann weisst Du schonmal, welche Funktion gescheitert ist. Oder Du schreibst die Meldungen in eine Datei, das geht natürlich auch

            So kann das aussehen:

            if (!mysql_select_db($db, $link))
            {
                mail("usw....
            }
            else
            {
                # mysql_seselct_db war erfolgreich, also weiter im text...

            [...]
            }

            Gruß Henk

            1. ICH RAFFS NICHT!!!!!!!!!!

              <?php
              mail("djwoelk@gmx.de", "CRON-TEST", "TEST", "From: djwoelk@gmx.de");
              $a = "a";
              $b = "b";
              $c = "c";
              $d = "d";
              $e = "f";
              $f = "g";

              $host = 'localhost';
              $user = 'xx';
              $pass = 'xx';
              $db = $user;
              $table = 'test2';

              $link = mysql_connect($host, $user, $pass);
              mysql_select_db($db, $link);
              $result = mysql_query("SELECT * FROM $table");

              if (!mysql_select_db($db, $link))
              {
               mail("djwoelk@gmx.de", "ERROR", "TEST", "From: djwoelk@gmx.de");
              }
              else
              {
              $query = "insert into test2 (a,b,c,d,e,f) values('$a','$b','$c','$d','$e','$f')";
              mysql_query($query) or die(mysql_error());
              mail("djwoelk@gmx.de", "NONE ERROR", "TEST", "From: djwoelk@gmx.de");
              }

              mysql_close($link);
              ?>

              die mail mit dem betreff: "CRON-TEST" bekomme ich, aber alles innerhalb der if-else abfrage nicht. weder "ERROR" noch "NONE ERROR".

              und von hand gehts!

              MfG
              Michael W.
              Ich weiß echt nicht mehr weiter

              1. Ich weiß echt nicht mehr weiter

                Tja, tut mir ja leid. Aber da weiß ich so spontan auch wirklich nicht mehr weiter. und ein Ansatz zur Lösung des Problems fällt mir leider auch nicht mehr ein...

                Vielleicht sagt ja mal jemand anders was dazu?

                Henk

              2. Hallo Michael,

                mysql_query($query) or die(mysql_error());

                Ich rate mal: Hier stirbt das PHP-Script, indem der Query fehlschlägt. Dadurch bekommst Du nie eine Mail. Mache das lieber so:

                $res = mysql_query ($query);
                if (!$res) {
                  mail('djwoelk@gmx.de', 'MYSQL-Fehler', mysql_error (), 'From: djwoelk@gmx.de');
                  exit;
                }

                Christian

                --
                Ich bitte darum, dass ein Themenbereich (BARRIEREFREIHEIT) eingerichtet wird.
      2. OK, aber DatenBank-Connects funktionieren bei mir nicht!
        ich bin gerade am austesten wodran das leigt. zuerst dachte ich das das an den includes liegt - tut es aber nicht. ich bekomme einfach keinen connect hin einen einfachen connect.

        Häng bei jeder Connect var mal einen OR die(mysql_error());
        dahinter und guck ob da was net klappt.

        Gruß
        Christian

  2. » ist das problem bekannt?

    mir auch nicht, läuft wie ne eins, und das sind mega-schleifen ;-)

  3. Hallo,

    kurz mal was grunsätzliches zu cronjobs.

    Cronjobs laufen defaultmäßig nicht ungedingt
    in der gleichen Umgebung wie Jobs, die ich nach
    einem normalen 'login' starte.
    D.H. Env-Variablen können gesetzt oder nicht gesetzt sein
    oder sogar andere Belegungen haben.

    So also sicherstellen, dass der cronjob in der 'richtigen'
    Umgebung läuft.

    Gruss

    Bernd