login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Cronjobs

Offline finduilas - 02/09/2008 12:04
Avatar van finduilasPHP gevorderde Hallo;

Ik heb een "programma" gemaakt die datums moet herinneren en dan een mail sturen als het zover is...

Maar nu zit ik met een probleem:

De ene moet uitgevoerd worden elke maand; de andere elke dag. Het bestand opzich werkt (als ik het handmatig laad).

* * 1 * * /usr/local/bin/php/home/user/domains/domein.be/public_html/Datereminder/cronjobs_month.php
* 11 * * * /usr/local/bin/php/home/user/domains/domein.be/public_html/Datereminder/cronjobs_day.php

Helaas werkt dit niet; ik heb al vanalles geprobeerd. Graag hulp

9 antwoorden

Gesponsorde links
Offline marten - 02/09/2008 13:03
Avatar van marten Beheerder Wat geeft je apache error log aan?
Offline finduilas - 02/09/2008 13:16
Avatar van finduilas PHP gevorderde [Tue Sep 2 09:22:30 2008] [error] [client 85.10.73.199] File does not exist:

En het bestand staat:
Datereminder/cronjobs_day.php

Wat zou dan het adres moeten zijn?
Offline marten - 02/09/2008 15:29
Avatar van marten Beheerder waarschijnlijk vanaf de webserver root te rekenen.

Kijk maar eens in je phpinfo. Hier staat een hele url
( vb: /usr/wwwroot/website/Datareminder/cronjobs_day.php )
Offline finduilas - 02/09/2008 16:07 (laatste wijziging 04/09/2008 09:52)
Avatar van finduilas PHP gevorderde Ik heb via php_info() m'n root achterhaald en ingesteld als cronjob. Als ik nu kijk via de logs zie ik geen fouten maar nog steeds geen mail gekregen + usage log geeft niet aan dat het geopend is (maar ik weet niet of dat er eigenlijk wel in komt.)

EDIT: hmmz, het is me nog steeds niet gelukt.
Even mijn cronjobs_day.php:
  1. <?php
  2. include('functions.php');
  3. //bericht maken
  4. $nu = time();
  5. $dag = date("d",$nu);
  6. $maand = date("m",$nu);
  7. $jaar = date("y",$nu);
  8. $start = mktime("0","0","0",$maand,$dag,$jaar);
  9. $dan = volgendedag($start);
  10. $query = mysql_query("SELECT * FROM datums WHERE `datum` >= '".$start."' AND `datum` < '".$dan."'");
  11. if(mysql_num_rows($query) == 0) {
  12. echo 'Geen datums';
  13. }
  14. else {
  15. while ($det = mysql_fetch_assoc($query)) {
  16. $bericht = '<table><tr><td>Naam:</td><td>';
  17. $bericht = $bericht.$det['naam'].'(id:'.$det['id'].')</td></tr><tr><td>Datum:</td><td>';
  18. $bericht = $bericht.date("l d F Y",$det['datum']);
  19. if($det['jaarlijks'] >= 1) {
  20. $bericht = $bericht.'('.$det['jaarlijks'].'jaarlijks)';
  21. $maand = date("m",$det['datum']);
  22. $dag = date("d",$det['datum']);
  23. $jaar = date("y",$det['datum']);
  24. $nieuwdatum = mktime("0","0","0",$maand,$dag,$jaar + $det['jaarlijks']);
  25. mysql_query("INSERT INTO datums(naam,datum,categorie,commentaar,jaarlijks) VALUES('".$det['naam']."',".$nieuwdatum.",'".$det['categorie']."','".$det['commentaar']."',".$det['jaarlijks'].")");
  26. }
  27. $bericht = $bericht.'</td></tr><tr><td>Categorie:</td><td>'.categorie($det['categorie']);
  28. $bericht = $bericht.'</td></tr><tr><td>Commentaar:</td><td>'.$det['commentaar'].'</td></tr></table>';
  29. echo $bericht;
  30. //Eigen gegevens
  31. $email = 'email@bedrijf.com'; //
  32. //Gegevens mail
  33. $onderwerp = 'Datereminder:';
  34. $onderwerp = $onderwerp.$det['naam'];
  35. //Headers
  36. $headers = "From: Datereminder <email@bedrijf.com>\r\n";
  37. $headers .= "MIME-Version: 1.0\r\n";
  38. $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
  39. $headers .= "Return-Path: Mail-Error <email@bedrijf.com>\r\n";
  40. $headers .= "Reply-To: email@bedrijf.com";
  41. //mail
  42. if(mail($email, $onderwerp, $bericht, $headers)) {
  43. mail('email@bedrijf.com',$onderwerp, $bericht, $headers);
  44. echo 'Verzonden';
  45. }
  46. else {
  47. echo 'Niet verzonden';
  48. }
  49. }
  50. }
  51. ?>


Deel van functions.php
  1. ## volgende maand
  2. function volgendemaand() {
  3. $nu = time();
  4. $jaar = date('y',$nu);
  5. $maand = date('m',$nu);
  6. if($maand == 12) {
  7. $jaar = $jaar + 1;
  8. }
  9. if($maand == 12) {
  10. $maand = 1;
  11. }
  12. else {
  13. $maand = $maand + 1;
  14. }
  15. $volgendemaand = mktime("0","0","0",$maand,"1",$jaar);
  16. return $volgendemaand;
  17. }
  18. function volgendedag($datum) {
  19. $maand = date('m',$datum);
  20. $dag = date('d',$datum);
  21. $jaar = date('y',$datum);
  22. if(checkdate($maand,$dag + 1,$jaar)) {
  23. $volgendemaand = mktime("0","0","0",$maand,$dag + 1,$jaar);
  24. }
  25. elseif(checkdate($maand + 1,1,$jaar)) {
  26. $volgendemaand = mktime("0","0","0",$maand +1,1,$jaar);
  27. }
  28. elseif(checkdate(1,1,$jaar + 1)) {
  29. $volgendemaand = mktime("0","0","0",1,1,$jaar + 1);
  30. }
  31. return $volgendemaand;
  32. }
  33. function vorigedag($datum) {
  34. $maand = date('m',$datum);
  35. $dag = date('d',$datum);
  36. $jaar = date('y',$datum);
  37. if(checkdate($maand,$dag - 1,$jaar)) {
  38. $volgendemaand = mktime("0","0","0",$maand,$dag - 1,$jaar);
  39. }
  40. elseif(($dag - 1) == 0) {
  41. if(checkdate($maand - 1,31,$jaar)) {
  42. $volgendemaand = mktime("0","0","0",$maand - 1,31,$jaar);
  43. }
  44. elseif(checkdate($maand - 1,30,$jaar)) {
  45. $volgendemaand = mktime("0","0","0",$maand - 1,30,$jaar);
  46. }
  47. elseif(checkdate($maand - 1,29,$jaar)) {
  48. $volgendemaand = mktime("0","0","0",$maand - 1,29,$jaar);
  49. }
  50. elseif(checkdate($maand - 1,28,$jaar)) {
  51. $volgendemaand = mktime("0","0","0",$maand - 1,28,$jaar);
  52. }
  53. }
  54. elseif(checkdate(31,12,$jaar - 1)) {
  55. $volgendemaand = mktime("0","0","0",31,12,$jaar - 1);
  56. }
  57. return $volgendemaand;
  58. }


Mijn cronjobs: (ik krijg geen error; maar ook geen mail)
  1. * * 1 * * /usr/local/bin/php /home/user/domains/.be/public_html/Datereminder/cronjobs_month.php
  2. * 00 * * * /usr/local/bin/php /home/user/domains/.be/public_html/Datereminder/cronjobs_day.php
Offline Ontani - 04/09/2008 09:53
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
waarom niet gewoon: php /home/..../... .php

ipv /usr/local/bin/php
Offline finduilas - 04/09/2008 09:59
Avatar van finduilas PHP gevorderde Ben ik nu aan het testen...

Vraagje; Als ik om 09:55 mijn cronjob instel om 10u. Werkt dit dan meteen; anders kan het ook daaraan liggen...
Offline Ontani - 04/09/2008 10:05 (laatste wijziging 04/09/2008 10:06)
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
normaal wel, maar stel ze voor te testen gewoon om de seconde ofzo in. dan weet je zeker of ze werken of niet.

Of probeer eerst iets simpels, het kopieren of aanmaken van een tekst bestand.
Offline finduilas - 04/09/2008 12:43 (laatste wijziging 05/09/2008 12:54)
Avatar van finduilas PHP gevorderde Ok; Kga et zo eens proberen.

  1. <?php
  2. $myFile = "test.txt";
  3. $fh = fopen($myFile, 'a') or die("can't open file");
  4. $time = date('d m y H:i:s',time());
  5. $stringData = "Om ".$time." was laatste uitvoering\n";
  6. fwrite($fh, $stringData);
  7. fclose($fh);
  8. ?>


Heb ik ingesteld zo:
*/1 * * * * php /home/user/domains/website.be/public_html/Datereminder/test.php
*/1 * * * * /usr/local/bin/php/ /home/user/domains/website.be/public_html/Datereminder/test.php
*/1 * * * * /home/user/domains/website.be/public_html/Datereminder/test.php

Maar helaas werkt het niet ....
Offline Joost - 06/09/2008 00:04
Avatar van Joost PHP expert */1 * * * * /usr/local/bin/php /home/user/domains/website.be/public_html/Datereminder/test.php


Zonder '/' achter php...
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.259s