Puncte:0

Cum fac ca Crontab să ruleze un întreg director de fișiere PHP?

drapel in

Am creat un mic program care va genera fișiere php și le va plasa într-un folder „/crons” pentru a permite joburilor cron să execute fișierele. Aceste fișiere php vor fi generate și denumite dinamic pe baza intrării utilizatorului. Așa că mă întrebam cum aș putea face Crontab să execute TOATE scripturile php care se află în acel director „/crons”, simultan. Este un fel de expresie regulată (regEx) cu un wildcard pentru a rula întregul director, așa cum se arată mai jos (ceva similar cu acesta)?

*/1 * * * * php /var/www/mywebsite.com/path-to-my-awesome-php-scripts/crons/*

Ce anume ar trebui să fac? Acest lucru necesită un script bash sau shell? (Nu am experiență cu bash sau shell). Mulțumiri.

Paul avatar
drapel cn
Asta nu funcționează?
Aaron Esteban avatar
drapel in
Oh, de fapt nu am încercat asta, dar cron acceptă un wildcard regEx la sfârșitul unui director? O sa incerc. Mă întreb dacă ar trebui să funcționeze și dacă nu, este ceva similar cu asta?
Paul avatar
drapel cn
Puteți vedea în `/etc/crontab` că începe `SHELL=/bin/sh`.
Aaron Esteban avatar
drapel in
Ok, deci l-am testat și se pare că rulează doar 1 fișier php în loc de cele 2 fișiere php pe care le am în director. Poate că cron poate selecta doar primul fișier.
Chris avatar
drapel it
Fără experiență cu bash sau shell, aș crea un alt script php care va gestiona logica dvs. cu `path-to-my-awesome-php-scripts/crons/*` și pur și simplu îl numiți în cron job `*/1 * * * * php /var/[...]/path-to-my-awesome-php-scripts/cronjob.php`
Aaron Esteban avatar
drapel in
Corect, și m-am gândit la acel Chris, cum ar fi un fișier master cu include în el, dar mă întrebam dacă există deja o modalitate simplă de a face acest lucru cu o comandă crontab.
Paul avatar
drapel cn
Dacă a apărut o problemă la rularea celorlalte scripturi, ar trebui să existe erori?
Puncte:1
drapel jp

Când alergi php *.php apoi PHP interpreter execută doar primul fișier. Îl poți verifica în afara cron mediu inconjurator.

Poți să folosești piese de rulare pentru a rula toate executabilele într-un anumit director. Vedea pagina de manual run-parts

Va trebui să faceți fișierele PHP executabile cu un fișier adecvat #! antet și bit executabil. Ta crontab ar trebui să arate ca

*/1 * * * * run-parts /var/www/mywebsite.com/path-to-my-awesome-php-scripts/crons
Aaron Esteban avatar
drapel in
Bună Alex, poți să-mi arăți un exemplu despre cum să faci antete corecte #! și un bit executabil? Nu am mai văzut asta până acum în php.Dacă îmi puteți arăta un exemplu rapid cu sintaxa adecvată a ceea ce vă referiți, pot obține imaginile și le pot scrie corect din acel moment. Multumesc pentru raspunsul tau.
drapel jp
@AaronEsteban, https://stackoverflow.com/questions/21731745/how-to-add-shebang-with-php-script-on-linux

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.