Met PHP dus. Ik heb een script dat ik ongeveer om het uur wil uitvoeren. Wel geautomatiseerd dus, dat het uit zichzelf start. Hoe kan ik dit doen? Of is dit niet mogelijk met PHP?
Verwijderd
Weet het niet precies, maar volgens mij moet je eens naar de cron() functie voor LINUX kijken....
Verwijderd
je moet waarschijnlijk met crontab gaan werken, ik heb er geen verstand van, ik haal hem er namelijk altijd uit omdat ik een hekel heb aan getimede dingen
ik zou eens
man crontab
intikken of naar
/etc/crontab/
gaan, suc6
ik zou eens
man crontab
intikken of naar
/etc/crontab/
gaan, suc6
Hmm, ik zit thuis op win98. De server is Linux. Hoe kan ik nu thuis testen of het überhaupt wel werkt, zonder het script gelijk naar de server te uploaden? Is er ook een mogelijkheid om een simpel proggie te gebruiken/maken om dit te doen (windows bv gaat ook je disk opruimen om de zoveel tijd, wel irritant, maar het werkt)?
Ik zelf draai dus een win98/omnihttpd/php3 server, en wat ik zou doen is gewoon in basic een proggie writen wat je php.exe aanroept. bijv:
c:\php3\php.exe c:\webroot\index.php
dit werkt wel, maar heb geen idee hoe dat in linux moet
suxez!
c:\php3\php.exe c:\webroot\index.php
dit werkt wel, maar heb geen idee hoe dat in linux moet
suxez!
Ok, ik heb, heel vroeger, op de commodore 64 wel wat Basic gedaan (GW-BASIC volgens mij). Kan ik dan wel gewoon SLEEP x-seconden als programma maken? Wacht hij dan gewoon x-sec, en gaat dan verder, of telt hij gewoon elke seconde of die x-seconden al voorbij zijn (CPU-load). Nog iets, als je bij een SLEEP op enter drukt, stopt hij met SLEEPEN, hoe kan ik dit voorkomen?
Sorry hoor, maar BASIC is al lang uit mijn hoofd (deels). Ik ken echt nog alleen maar wat basis zooi (IF-THEN, heel leuk gedaan. En natuurlijk het onvolprezen GOTO!!!).
Groeten,
Thijs
Sorry hoor, maar BASIC is al lang uit mijn hoofd (deels). Ik ken echt nog alleen maar wat basis zooi (IF-THEN, heel leuk gedaan. En natuurlijk het onvolprezen GOTO!!!).
Groeten,
Thijs
Verwijderd
Ik zit met hetzelfde probleem, ik heb net even naar die manual van crontab gekeken maar daar wordt ik niet veel wijzer van, ik zie niks staan dat met tijdstippen te maken heeft.
Dat wat in het bold staat gaat het om. Dus wat doe je nou? Dit: `crontab -e`, dan start (waarschijnlijk) vi op. Je kan dan je crontab editten, en een line zoals in het tweede dikgedrukte gedeelte toevoegen. Als je de weg niet kent in vi kan je `:h` intikken als je in vi zit, of op de shell `VISUAL=joe` (als je joe fijn vind, of anders pico), en dan `export VISUAL`. Als je vervolgens `crontab -e` intikt, kan je de crontab editten met joe danwel pico.NAME
crontab - manipulate per-user crontabs (Dillon's Cron)
SYNOPSIS
crontab file [-u user] - replace crontab from file
crontab - [-u user] - replace crontab from stdin
crontab -l [user] - list crontab for user
crontab -e [user] - edit crontab for user
crontab -d [user] - delete crontab for user
crontab -c dir - specify crontab directory
DESCRIPTION
crontab manipulates the crontab for a particular user.
Only the superuser may specify a different user and/or
crontab directory. Generally the -e option is used to edit your crontab. crontab will use /usr/bin/vi or the
editor specified by your VISUAL environment variable to
edit the crontab.
Unlike other crond/crontabs, this crontab does not try to
do everything under the sun. Frankly, a shell script is
much more able to manipulate the environment then cron and
I see no particular reason to use the user's shell (from
his password entry) to run cron commands when this
requires special casing of non-user crontabs, such as
those for UUCP. When a crontab command is run, this
crontab runs it with /bin/sh and sets up only three envi-
ronment variables: USER, HOME, and SHELL.
crond automatically detects changes in the time. Reverse-
indexed time changes less then an hour old will NOT re-run
crontab commands already issued in the recovered period.
Forward-indexed changes less then an hour into the future
will issue missed commands exactly once. Changes greater
then an hour into the past or future cause crond to resyn-
chronize and not issue missed commands. No attempt will
be made to issue commands lost due to a reboot, and com-
mands are not reissued if the previously issued command is
still running. For example, if you have a crontab command
'sleep 70' that you wish to run once a minute, cron will
only be able to issue the command once every two minutes.
If you do not like this feature, you can run your commands
in the background with an '&'.
The crontab format is roughly similar to that used by vix-
iecron, but without complex features. Individual fields
may contain a time, a time range, a time range with a skip
factor, a symbolic range for the day of week and month in
year, and additional subranges delimited with commas.
Blank lines in the crontab or lines that begin with a hash
(#) are ignored. If you specify both a day in the month
and a day of week, the result is effectively ORd... the
crontab entry will be run on the specified day of week and
on the specified day in the month.
# MIN HOUR DAY MONTH DAYOFWEEK COMMAND
# at 6:10 a.m. every day
10 6 * * * date
# every two hours at the top of the hour
0 */2 * * * date
# every two hours from 11p.m. to 7a.m., and at 8a.m.
0 23-7/2,8 * * * date
# at 11:00 a.m. on the 4th and on every mon, tue, wed
0 11 4 * mon-wed date
# 4:00 a.m. on january 1st
0 4 1 jan * date
# once an hour, all output appended to log file
0 4 1 jan * date >>/var/log/messages 2>&1
The command portion of the line is run with /bin/sh -c
<command> and may therefore contain any valid bourne shell
command. A common practice is to run your command with
exec to keep the process table uncluttered. It is also
common to redirect output to a log file. If you do not,
and the command generates output on stdout or stderr, the
result will be mailed to the user in question. If you use
this mechanism for special users, such as UUCP, you may
want to create an alias for the user to direct the mail to
someone else, such as root or postmaster.
Internally, this cron uses a quick indexing system to
reduce CPU overhead when looking for commands to execute.
Several hundred crontabs with several thousand entries can
be handled without using noticable CPU resources.
BUGS
Ought to be able to have several crontab files for any
given user, as an organizational tool.
AUTHOR
Matthew Dillon (dillon@apollo.west.oic.com)
1 May 1994 1
Verwijderd
En voor onder windows heb je Winat. Doet hetzelfde als crond.
nu zou het toch wel moeten lukken dacht ik zo...
nu zou het toch wel moeten lukken dacht ik zo...
Verwijderd
Is het niet mogelijk met een tijdfunctie en een if vergelijking dit uit te voeren?
zoiets als
$nu = date("j-m-y");
if ($nu == "datum zoals in de bovenstaande formatering") {
print ("doe eens gek");
} else {
print ("vandaag maar niet");
}
misschien?
zoiets als
$nu = date("j-m-y");
if ($nu == "datum zoals in de bovenstaande formatering") {
print ("doe eens gek");
} else {
print ("vandaag maar niet");
}
misschien?
je zou ook gewoon die url eens in het uur op kunnen halen met lynx .... en dat uiteraard via crontab gestart ...
0 */1 * * * lynx [url="http://localhost/tijddingetje.php3"]http://localhost/tijddingetje.php3[/url] >/dev/null 2>&1
zoiets zeg maar
0 */1 * * * lynx [url="http://localhost/tijddingetje.php3"]http://localhost/tijddingetje.php3[/url] >/dev/null 2>&1
zoiets zeg maar
// PaneVino \
Verwijderd
Merten> Als je het zo zou doen zou je dat scripje constant moeten laten draaien en constant de datum moeten laten checken, terwijl je daar allemaal mooie progjes zoals crond() en atd voor hebt...
Panevino> Dat kan je dus beter direct doen, hoef je dat script niet per se in je www root te zetten.
Dat wordt dus iets als:
0 */1 * * * /usr/bin/php /scripts/tijddingetje.php3 >/dev/null 2>&1
Panevino> Dat kan je dus beter direct doen, hoef je dat script niet per se in je www root te zetten.
Dat wordt dus iets als:
0 */1 * * * /usr/bin/php /scripts/tijddingetje.php3 >/dev/null 2>&1
The Daan> ig ging er even vannuit dat ern geen php binary was maar dat dat ding als module in apache gebakken zat .. een default redhat/suse linux install situatie zeg maar ... leek me hier een redelijk veilige aanname...
// PaneVino \
Verwijderd
In je php-config staat ergens een maximale executie-tijd ingesteld voor je scriptjes (dit o.a. om problemen met oneindige loopjes te voorkomen). Je kan dus je scriptje niet een paar uur laten 'slapen' (tenzij je die maximale executietijd op een paar uur zet, maar dat wil je niet...)
Crontabs gebruiken dus.
Crontabs gebruiken dus.
Verwijderd
Panevino> zit wat in... 
Tieske> lijkt me dat je nu toch echt wel genoeg info hebt...toch?
Ik heb zelf 3 scripjes via een crontab lopen, en die doen dat perfect op de ingestelde tijd.
Tieske> lijkt me dat je nu toch echt wel genoeg info hebt...toch?
Ik heb zelf 3 scripjes via een crontab lopen, en die doen dat perfect op de ingestelde tijd.
Dus wat kan ik nou het beste gebruiken? Crontabs zijn dus niet beschikbaar op een win98 bak, WinAT maakt gebruik van AT commands, en volgens die site zit dat alleen bij windows NT, en is dus ook onbruikbaar? Is er niet gewoon een of ander simpel progje voor? Ik heb nu ClockMan95, en daarmee kan je wel iets laten runnen om de zoveel tijd.
Ik zit alleen met een probleem. Ik kan een .php3 script alleen goed laten uitvoeren als ik [url="http://localhost/script.php3"]http://localhost/script.php3[/url] in de browser pleur. Met de progjes die ik heb getest opent hij (pad aangeven) C:\Program Files\Apache blablabla\script.php3, wat niet als php3 script herkend wordt en dus geen fatsoenlijk output geeft. Waarschijnlijk omdat dit niet via Apache gaat dus...
Hoe kan je trouwens met een commando een URL in IE laden? Bijvoorbeeld iexplore.exe "http://localhost/script.php3" of iets dergelijks, of is dit niet mogelijk?
Ik zit alleen met een probleem. Ik kan een .php3 script alleen goed laten uitvoeren als ik [url="http://localhost/script.php3"]http://localhost/script.php3[/url] in de browser pleur. Met de progjes die ik heb getest opent hij (pad aangeven) C:\Program Files\Apache blablabla\script.php3, wat niet als php3 script herkend wordt en dus geen fatsoenlijk output geeft. Waarschijnlijk omdat dit niet via Apache gaat dus...
Hoe kan je trouwens met een commando een URL in IE laden? Bijvoorbeeld iexplore.exe "http://localhost/script.php3" of iets dergelijks, of is dit niet mogelijk?
Verwijderd
Commando voor het uitvoeren van een scripje:
c:\php3\php.exe c:\path_to_script\script.php3
Oftewel, je moet die scripjes met je php.exe aanroepen, zoals hierboven staat. Je webserver doet dat automatisch zodra die een php script voor zijn neus krijgt...
c:\php3\php.exe c:\path_to_script\script.php3
Oftewel, je moet die scripjes met je php.exe aanroepen, zoals hierboven staat. Je webserver doet dat automatisch zodra die een php script voor zijn neus krijgt...
Da's wel leuk verder, maar dan krijg ik de output in een DOS-box te zien! Wat heb ik nou weer verkeerd gedaan!
Ik heb dus:
c:\php3\php.exe c:\Progra~1\Apache~1\Apache\htdocs\ht.php3
Die ~1 omdat php anders de dir niet kan vinden. Typ ik dit in start/uitvoeren of gewoon gelijk in de dos-box, krijg ik de HTML output die ik wil, maar in de DOS-box. Ik wil dit dus naar de browser sturen! Wat moet ik hiervoor aanpassen/had ik al moeten aanpassen/doe ik fout?
En heeft dit met browscap te maken? Ik weet eigenlijk mijn god niet wat dat doet, maar er zit iets met 'brows' in -> browser -> internet??
Ik heb dus:
c:\php3\php.exe c:\Progra~1\Apache~1\Apache\htdocs\ht.php3
Die ~1 omdat php anders de dir niet kan vinden. Typ ik dit in start/uitvoeren of gewoon gelijk in de dos-box, krijg ik de HTML output die ik wil, maar in de DOS-box. Ik wil dit dus naar de browser sturen! Wat moet ik hiervoor aanpassen/had ik al moeten aanpassen/doe ik fout?
En heeft dit met browscap te maken? Ik weet eigenlijk mijn god niet wat dat doet, maar er zit iets met 'brows' in -> browser -> internet??
Browscap.ini is een database'je met gegevens over de browser waaraan ie precies kan zien welke broswer/platform/versie etc je gebruikt. Check maar eens in www.boerman.eu.org/zooi/browscap.ini
Trouwens het simpelste antwoord op deze vraag is: zet een browser aan op je server met een site met een refresh van 3600 seconden (1 uur), zoiets:
<html><head><meta http-equiv="Refresh" content="3600;URL=index.php"></head><body>
<?
php code
?>
</body></html>
Dat niemand hier aan gedacht heeft
<html><head><meta http-equiv="Refresh" content="3600;URL=index.php"></head><body>
<?
php code
?>
</body></html>
Dat niemand hier aan gedacht heeft
Daar is al wel aan gedacht, en meerdere keren is er laten zien dat dat de oplossing niet was.
Verwijderd
hmmm, dus je wilt via een schedule commando elk uur ofzo je browser op laten starten met dat php script.....
nuttig!!
Ik snap nu ff niet meer wat je nou eigenlijk wilt.
nuttig!!
Ik snap nu ff niet meer wat je nou eigenlijk wilt.
nee, je laat je browser gewoon aanstaan en hij start ieder uur het script omdat de pagina dan herlaadt.
Wat ik wil is dat bijvoorbeeld om het uur een php(3) script wordt gerunned. De browser hoeft niet per se op te starten, maar dit was ik aan het overwegen. Ik heb namelijk een aantal progjes gevonden waarmee je een aantal zaken kan automatiseren. Het meest handige daarvan was het runnen van een programma. En het intypen van c:\php3\php.exe c:\path\script.php3 levert alleen output in een DOS-box op (bij mij tenminste).
Daarom dacht ik het script te willen runnen in een browser (iexplore.exe). De browser moet dan echter automatisch opstarten met [url="http://localhost/script.php3"]http://localhost/script.php3[/url] , maar dit is mij nog niet gelukt, maar misschien ook niet nodig.
Nu denk ik er opeens aan, als je dus een script in een dos-box uitvoert (je krijgt dan in zo'n leuk command-line promptje de pure HTML te zien, dus als regels:
<HTML>
<HEAD> enz.), kan je dan ook gegevens in een database gooien? Waarschijnlijk wel, maar dan kan ik nog geen leuke melding te zien bij succesvolle script-run.
Maar goed, ik dwaal af (maar kan het wel, dat database-inserten?). Wat ik dus uiteindelijk wil is een php script om het uur te laten runnen die elke keer wat in een database insert. Is dit mogelijk en zo ja hoe? Ik zit met win98 opgescheept (heb wel linux -> 386 en zwaar oud. RedHat 3.0.3 wel te verstaan), dus crontabs zijn onbruikbaar. Weet iemand nou een manier waarop dit kan?
Daarom dacht ik het script te willen runnen in een browser (iexplore.exe). De browser moet dan echter automatisch opstarten met [url="http://localhost/script.php3"]http://localhost/script.php3[/url] , maar dit is mij nog niet gelukt, maar misschien ook niet nodig.
Nu denk ik er opeens aan, als je dus een script in een dos-box uitvoert (je krijgt dan in zo'n leuk command-line promptje de pure HTML te zien, dus als regels:
<HTML>
<HEAD> enz.), kan je dan ook gegevens in een database gooien? Waarschijnlijk wel, maar dan kan ik nog geen leuke melding te zien bij succesvolle script-run.
Maar goed, ik dwaal af (maar kan het wel, dat database-inserten?). Wat ik dus uiteindelijk wil is een php script om het uur te laten runnen die elke keer wat in een database insert. Is dit mogelijk en zo ja hoe? Ik zit met win98 opgescheept (heb wel linux -> 386 en zwaar oud. RedHat 3.0.3 wel te verstaan), dus crontabs zijn onbruikbaar. Weet iemand nou een manier waarop dit kan?
Verwijderd
Ja, tuurlijk kan dat. als je een echo "hallo"; doet in een dos box komt die echo gewoon op je command line te staan, doe je dat in een browser dan komt er "hallo" in je browser te staan.
Als je aan het eind van je script zegt:
if (alles goed){
echo "Alles is goed gegaan";
}
else
{
echo "Er is iets fout gegaan..";
}
Dan krijg ej die msg's mooi in je dos boxje te zien. Verder kan je alle commando's en functies gewoon gebruiken hoor. PHP scripje runnen heeft in principe geen bal met een webserver te maken, je hebt alleen de mogelijkheid om het te integreren in een webserver.
Dingen als inserten in MySQL heeft dus ook nix met een webserver of browser te maken. Gaat dus prima als je hem command line runt....
Als je aan het eind van je script zegt:
if (alles goed){
echo "Alles is goed gegaan";
}
else
{
echo "Er is iets fout gegaan..";
}
Dan krijg ej die msg's mooi in je dos boxje te zien. Verder kan je alle commando's en functies gewoon gebruiken hoor. PHP scripje runnen heeft in principe geen bal met een webserver te maken, je hebt alleen de mogelijkheid om het te integreren in een webserver.
Dingen als inserten in MySQL heeft dus ook nix met een webserver of browser te maken. Gaat dus prima als je hem command line runt....
Pagina: 1