[ m_k @ 08.06.2006. 21:52 ] @
Na serveru mogu da kreiram cron job iz cpanela ali me zanima da li li ga moze kreirati i php skripta? |
[ m_k @ 08.06.2006. 21:52 ] @
[ SmilieBG @ 08.06.2006. 23:32 ] @
Moze samo ako imas exec() ili system() dozvolu na PHP-u. Komanda bi bila:
<? $filename = '/some/file'; $crontab = "10 1 * * * rm -rf /tmp/*"; if (is_writable($filename)) { if (!$handle = fopen($filename, 'w+')) { echo "Cannot open file ($filename)"; exit; } if (fwrite($handle, $crontab) === FALSE) { echo "Cannot write to file ($filename)"; exit; } echo "Success, wrote ($crontab) to file ($filename)"; fclose($handle); } else { echo "The file $filename is not writable"; } exec('crontab -u username /some/file'); ?> Obrati paznju na sledece (ako exec ili system rade): - crontab uvek izbrise fajl i dopise samo nov fajl i ne mozes ga naterati drugacije, znaci ako vec imas nesto i to zelis da ostane - moras prvo da 'izvuces' to nesto, pa da dodas u fajl, pa ceo fajl da ucitas. - iz istog razloga sam gore stavio da se novi fajl uvek brise pre ponovnog pisanja. Poz, Sale PS. imam kompletan crontab sajt koji nudi ovu uslugu - ako te jos nesto zanima pitaj, znam u detalje :) [ SmilieBG @ 08.06.2006. 23:33 ] @
Eh, da pazi vrlo i na sledece:
koji user ce da kreira crontab! Naime, apache user (koji pokrece webserver), nema pravo da izvrsava fajlove, tako da primer od gore (da se svake noci u 1:10 ocisti /tmp dir _nece_ raditi pod userom apache) ;) Poz, Sale [ m_k @ 09.06.2006. 09:35 ] @
Malo cu ovo da proucim pa cu da se javim ako bude problema.
Sad mi pade na pamet da ovo mozda i nije najbolje rjesenje mog problema pa ako neko zna bolje nek mi kaze :) A problem je: Trebam da uradim skriptu koja ce da radi u pozadini (da nije pokrenut browser) i da nakon sto se izvrsi pokrene drugu skriptu kao novi proses (da bi izbjegao vremensko ogranicenje za izvrsavanje). [ m_k @ 09.06.2006. 09:43 ] @
Dva pitanja u vezi onog coda:
1. Jel $filename = '/some/file'; putanja do fajla koji treba da se pokrece cron jobom? 2. U komandi exec('crontab -u username /some/file'); sta je usermane a sta /some/file? [ SmilieBG @ 09.06.2006. 17:00 ] @
/some/file je template za cron. Cron je takodje 'samo' tekstualni fajl koji izvrsava naredbe iz tog fajl u odredjeno vreme.
Dakle, prvo upises u /some/file sta da crontab izvrsava, a zatim sa exec() uneses to u crontab. crontab -u username -> pod kojim korisnikom da instaliras crontab. Mislim da za to sto ti treba moze crontab fino da sluzi. Poz, Sale [ m_k @ 09.06.2006. 18:05 ] @
A gdje da nađem ovo username? Jel to isti username sa kojim se logujem na cpanel?
[ SmilieBG @ 09.06.2006. 21:25 ] @
Hmz... ne, to je korisnicko ime (tj, sam korisnik) na OS nivou. Kao sto je webserver pod korisnickim imenom apache ili nobody. Kakav tip hostinga imas? I mozes li videti, kada napravis crontab iz CPanela, pod kojim korisnikom se to radi?
Poz, Sale [ crews_adder @ 10.06.2006. 10:21 ] @
Samo za informaciju, cron moze da se kreira i "spolja" - tzv. Pseudo Cron. Moze da bude od koristi za one koji nemaju dozvolu da kreiraju cron-job na serveru.
[ m_k @ 10.06.2006. 13:51 ] @
Citat: crews_adder: Samo za informaciju, cron moze da se kreira i "spolja" - tzv. Pseudo Cron. Moze da bude od koristi za one koji nemaju dozvolu da kreiraju cron-job na serveru. Al da bi ovo radilo neka stranica na serveru mora imati dosta posjeta, a kod mene ih nema. Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|