PHP Datei per Cronjob ausführen lassen

nolimitek

Registered User
Ich kriegs einfach nicht gebacken

Ich möchte folgende php Datei per Cronjob einmal am Tag ausführen lassen

PHP:
<?php
/*
  $Id: cron_birthday.php,v 1.0.1.2 2005/02/03 12:46:52 davistan Exp $

  Contribution based on:
  osCommerce, Open Source E-Commerce Solutions
  http://www.oscommerce.com

  Copyright (c) 2005 Davis Tan - www.datumcorp.com

  Released under the GNU General Public License
*/

  include('includes/application_top.php');

  //Settings - changes made here
  $offset = '+2'; //Send birthday email how many days after(-)/during(blank)/before(+)
  $subject = 'Alles Gute zum Geburtstag %s!';
  $msg = 'Hallo %s,'. "\n\n" .
                 'Nach ihrer Registrierung zur Folge haben sie am %s Geburtstag. Wir von  '.STORE_NAME.' wünschen ihnen alles erdenklich Gute zu ihrem Geburtstag!!!
';

/*  $msg .= '
We have a birthday present for you :)

'.STORE_NAME.' would like to give you a birthday present:
';*/

  $msg .= '
Wir hoffen das ihnen dieses Mail etwas freude bereitet,

und würden uns freuen sie bald wieder bei '. STORE_NAME .' begrüssen zu dürfen.!


Mit freundlichen Grüssen,

'.STORE_OWNER . "\n" . STORE_NAME . ' - ' . HTTP_SERVER . DIR_WS_CATALOG . "\n" . TEXT_SLOGAN . "\n";


  //prevent script from running more than once a day
  $prev = tep_db_query("SELECT * FROM ".TABLE_CONFIGURATION." WHERE CONFIGURATION_KEY='CRON_BD_RUN'");
  if (tep_db_num_rows($prev) > 0) {
          $prev_val = tep_db_fetch_array($prev);
          if($prev_val['configuration_value'] == date("Ymd"))
            die('Halt! Already executed - should not execute more than once a day.');
          else
        tep_db_query("UPDATE ".TABLE_CONFIGURATION." SET configuration_value='".date("Ymd")."' WHERE CONFIGURATION_KEY='CRON_BD_RUN'");
  } else {
      tep_db_query("INSERT INTO ".TABLE_CONFIGURATION." (CONFIGURATION_KEY, configuration_value, CONFIGURATION_GROUP_ID) VALUES('CRON_BD_RUN', '".date("Ymd")."', 6)");
  }

  $bdsql = "SELECT * FROM " . TABLE_CUSTOMERS . " WHERE " .
                "MONTH(customers_dob)=MONTH(curdate()) AND DAYOFMONTH(customers_dob)=DAYOFMONTH(curdate())$offset";

  $bdqry = tep_db_query($bdsql);

  if (tep_db_num_rows($bdqry) > 0) {
         while($bdarr = tep_db_fetch_array($bdqry))
     {
                echo 'Sent email to '. $bdarr['customers_firstname'] . ' ' . $bdarr['customers_lastname'] . ' ' . tep_date_short($bdarr['customers_dob']) . "\n";

                $bd_sub = sprintf($subject, $bdarr['customers_firstname']);
                $bd_msg = sprintf($msg, $bdarr['customers_firstname'], tep_date_short($bdarr['customers_dob']));

                tep_mail($bdarr['customers_firstname'], $bdarr['customers_email_address'], $bd_sub, $bd_msg, STORE_NAME, STORE_OWNER_EMAIL_ADDRESS, '');

                // send emails to other people
            if (SEND_EXTRA_ORDER_EMAILS_TO != '')
                  tep_mail($bdarr['customer_firstname'], SEND_EXTRA_ORDER_EMAILS_TO, $bd_sub, $bd_msg, STORE_NAME, STORE_OWNER_EMAIL_ADDRESS, '');
         }
  } else {
          //no birthdays for today
      if (SEND_EXTRA_ORDER_EMAILS_TO != '')
                tep_mail(STORE_NAME, SEND_EXTRA_ORDER_EMAILS_TO, STORE_NAME . ' Birthday Cron', 'No birthday for ' . date("Y-m-d") . ' offset: '. $offset, STORE_NAME, STORE_OWNER_EMAIL_ADDRESS, '');

  }

  require(DIR_WS_INCLUDES . 'application_bottom.php');
?>

Die Datei liegt im verzeichnis

/usr/virtualweb/domain1/html/catalog

und heißt

cronbirthday.php

Ich schaffs einfach nicht die Datei per cron ausführen zu lassen

Kann mir mal jemand bitte erklären schritt fürt schritt wie ich das anstellen muß das das funzt

mfg Chris
 
Hallo!
Neuen Cronjob erstellen (crontab -e) und
Code:
0 0 * * * wget /usr/virtualweb/domain1/html/catalog/script.php
eintragen. Oder was genau meinst du jetzt?

mfG
Thorsten
 
Hallo!
Funktioniert es direkt auf der shell? Werden eventuell Fehler ausgegeben?

mfG
Thorsten
 
Ah da liegt wohl der Hund begarben
Folgende Meldung bekomme ich wenn ich die datei in der Shell ausführe

./cronbirthday.php: ?php: No such file or directory
./cronbirthday.php: /bin: is a directory
./cronbirthday.php: Contribution: command not found
./cronbirthday.php: osCommerce,: command not found
./cronbirthday.php: http://www.oscommerce.com: No such file or directory
./cronbirthday.php: line 9: syntax error near unexpected token `(c)'
./cronbirthday.php: line 9: ` Copyright (c) 2005 Davis Tan - www.datumcorp.com'


was muß ich denn da jetzt anstellen :o
 
In der ersten Zeile deines Scriptes

#!/PFAD/ZU/BINARY/PHP -q

Einfügen dann nimmt er beim Ausführen der Datei PHP als Interpreter
 
Hi,

Keine ahnung ob das hier noch aktuell ist...

Aber bei mir muss ich es so eingeben:

Code:
usr/bin/php -f home/h/hallo.de/public_html/hallo/hallo.php
 
Back
Top