cronjob vraagje
Pagina: « vorige 1 2 3 volgende »
Euh... waar vind ik dat :-s
(Oei... je merkt wel dat ik niet zoveel kaas heb gegeten van systeembeheer, hahaha.)
Meestal /usr/bin/php
Nice, dit was weer een (voor mij) erg nuttig topic.
Bedankt allemaal!!!
Werkt een cronjob eigenlijk precies hetzelfde als de normale uitvoering van een PHP script? Ik zou niet weten waar je het voor nodig hebt, maar kun je bijvoorbeeld in een cronjob een sessie aanmaken? En heb je bijv. ook een $_SERVER array? En werkt bijv. ini_set binnen een cronjob?
En als laatste... hoe maak je een cronjob "zichtbaar"? Of kan dat niet? Stel bijv, je wilt in je cronjob-bestand een ander bestand includen en je genereert dynamisch het pad van dat bestand. Nu wil je controleren of dat pad juist is. Normaal gesproken doe je dan echo $path en het pad verschijnt in je browser. Maar hoe doe je dat met een cronjob?
Je ziet dan direct de output.
Dat heeft wel als nadeel dat jouw zoekpath geset is, en dat kan voor de cron nog missen. Dus probeer dan direct het complete path naar php en het script te gebruiken.
JE ontvangt als je dat instelt de output van de cronjobs per mail.
Dat kun je ook bekijken. Daarin staat alle output van het script. dus ook foutmeldingen.
session gebruiken, lijkt me niet zinvol
Of je sessions kan maken, weet ik niet, maar ik betwijfel het, en ik zie geen reden waarom je dat wilt gebruiken. Je voert tenslotte maar één script uit.
De output van een cronjob kan je zichtbaar maken door deze te mailen of te schrijven naar een logfile:
Code (php)
1
* * * * * /usr/bin/php /home/ozzie/web/crons/belangrijkecron.php >> /home/ozzie/web/logs/cronlog.txt
Bij DirectAdmin komen deze standaard in de hoofmailbox van de user. Daar adviseer ik altijd om een eigen mailbox aan te maken voor je website.
Gewijzigd op 05/06/2014 14:42:11 door - Ariën -
Je kan de output van een cronjob in een bestand schrijven, of versturen per mail. Ik neem aan dat je dat onder 'zichtbaar' verstaat.
Je hebt bijv. bepaalde ini-instellingen waarmee je kunt aangeven dat je sessie alleen via cookies mag verlopen:
ini_set('session.use_only_cookies', 1);
Voor een normaal request is dit een zinvolle setting, maar als ik het goed begrijp heeft het dus geen zin om deze setting binnen een cronjob uit te voeren. Correct?
Ik begrijp inderdaad dat ik de uitkomst van de cronjob kan laten mailen, en het loggen is ook wel handig inderdaad. Wat ik bedoelde met zichtbaar maken, is dat ik terwijl ik aan het programmeren ben (dus de cronjob is nog niet klaar) bijv. een variabele kan echo'en om te zien of de inhoud klopt. Als ik goed begrijp wat Ivo zegt, dan kan ik dus de cronjob via de command line (via Putty) aanroepen en als ik dan iets echo, dan verschijnt dat gewoon in Putty op het scherm als ik de cronjob aanroep? Begrijp ik het zo goed?
yep dat klopt.
En dan kan je ook gebruik maken van echo.
Hooguit roept hij het script aan met meegave van wachtwoord etc in een rijtje parameters.
Het is ook mogelijk om voor in cli aangeroepen php een andere php.ini te gebruiken, dan voor de web-versie. (of zelfs een andere php-versie, waar ik ook wel eens door verrast ben).
Zijn er overigens met cronjobs nog bepaalde "veiligheidsaspecten" waarmee ik rekening moet houden? Of is dat totaal niet van toepassing? De cronjobs wil ik in een private map zetten zodat ze niet van buitenaf kunnen worden aangeroepen. Ik neem aan dat het dan altijd veilig is?
Ik heb scripts draaien die 24 uur draaien. (kan in principe ook langer, maar ik wil voor de zekerheid dat script gewoon minimaal 1x per dag starten.
Pas als het script constateerd dat 24 uur verstreken is, doet het zelf exit().
En om 0:00 start ik het steeds.
(is een script dat het draaien van IP-camera's aanstuurt)
Toevoeging op 05/06/2014 15:11:06:
script hoeft in de document root. Of zelfs maar daar in de buurt.
/usr/bin/php /home/ozzie/script.php
mag ook.
Je kunt met chmod het script ook uitvoerbaar maken en dan op regel 1 vermelden dat het middels php werkt:
chmod 700 script.php
en dan ipv
/usr/bin/php script.php
kun je
./script.php gebruiken
Toevoeging op 05/06/2014 15:12:26:
Ivo P op 05/06/2014 15:08:44:
van time-out met 30 of 60 seconden is ook geen sprake trouwens.
Ik heb scripts draaien die 24 uur draaien. (kan in principe ook langer, maar ik wil voor de zekerheid dat script gewoon minimaal 1x per dag starten.
Pas als het script constateerd dat 24 uur verstreken is, doet het zelf exit().
En om 0:00 start ik het steeds.
(is een script dat het draaien van IP-camera's aanstuurt)
Toevoeging op 05/06/2014 15:11:06:
script hoeft in de document root. Of zelfs maar daar in de buurt.
/usr/bin/php /home/ozzie/script.php
mag ook.
Je kunt met chmod het script ook uitvoerbaar maken en dan op regel 1 vermelden dat het middels php werkt:
chmod 700 script.php
en dan ipv
/usr/bin/php script.php
kun je
./script.php gebruiken
Ik heb scripts draaien die 24 uur draaien. (kan in principe ook langer, maar ik wil voor de zekerheid dat script gewoon minimaal 1x per dag starten.
Pas als het script constateerd dat 24 uur verstreken is, doet het zelf exit().
En om 0:00 start ik het steeds.
(is een script dat het draaien van IP-camera's aanstuurt)
Toevoeging op 05/06/2014 15:11:06:
script hoeft in de document root. Of zelfs maar daar in de buurt.
/usr/bin/php /home/ozzie/script.php
mag ook.
Je kunt met chmod het script ook uitvoerbaar maken en dan op regel 1 vermelden dat het middels php werkt:
chmod 700 script.php
en dan ipv
/usr/bin/php script.php
kun je
./script.php gebruiken
>> Ik heb scripts draaien die 24 uur draaien.
Zo, da's lang :) Is zo'n script dan echt 24 uur achter elkaar bezig? En hoe geef ja aan dat ie na 24 uur moet stoppen?
>> Je kunt met chmod het script ook uitvoerbaar maken en dan op regel 1 vermelden dat het middels php werkt:
Ah oké. Dit zou je dan voor ieder cronjob bestand moeten doen? Zitten daar veiligheidsrisico's aan?
En stel dat ik 1 algemeen cronjob bestand zou gebruiken dat ik uitvoerbaar maak, en de naam van het te gebruiken cronjob bestand als paramter meegeef. Zou dat dan ook werken?
./cronjob.php deletecache.php
chmod 700 geeft alle rechten (7) inclusief execute aan de owner. De rest heeft 0 rechten.
---
24 uur:
Ivo, kun je in plaats van een sleep(15) gedurende 24h niet beter een cronjob per 15s schedulen?
chmod 700 geeft alle rechten (7) inclusief execute aan de owner. De rest heeft 0 rechten.
Als ik een cronjob via een panel uitvoer en in dat panel ben ik ingelogd als user ozzie. Als ik dan via het panel een cronjob instel, is het dan oké als het cronjob bestand zelf ook ozzie als eigenaar heeft? Of moet een cronjob bestand per se root als eigenaar hebben?
>> 24 uur:
Ah zo... grappig. En na 24 uur geef je 'm als het ware weer een nieuwe "zwiep" :)
En meestal draaien ze onder root.
Gewijzigd op 05/06/2014 15:37:24 door - SanThe -
Oh... wordt een cronjob trouwens automatisch na uitvoering uit het geheugen verwijderd?
Ward van der Put op 05/06/2014 15:34:01:
Offtopic:
Ivo, kun je in plaats van een sleep(15) gedurende 24h niet beter een cronjob per 15s schedulen?
Ivo, kun je in plaats van een sleep(15) gedurende 24h niet beter een cronjob per 15s schedulen?
Alleen gaat een cron per minuut. En dat is me te lang.
Bovendien is de 15 seconden in het script dat ik gebruikte voor de copy paste inderdaad hard, maar in de actuele versie is de instelling flexibel en mede afhankelijk van het tijdstip en het aantal posities voor de camera.
-- heb zo recent een paar auto krakers mooi in beeld gehad.
Zou jammer geweest zijn als dan maar 1x per 5 minuten de camera die positie had gefilmd.