Rularea scriptului php într-un program cron

Rulați scriptul PHP pe un program cron. Când totul nu este atât de clar - 4

  • 08.04.15 08:57 •
  • SAlex_S •
  • # 255245 •
  • Habrahabr •
  • 6 •
  • 2637

- la fel ca Forbes, doar mai bine.







Rularea scriptului php într-un program cron

Primul caz


Setările implicite nu sunt specificate în setările sistemului de operare. În consecință, următoarea comandă din cron nu va fi executată.


Comanda corectă este a doua opțiune, în care vom scrie calea completă către interpretul php.


Există și alte câteva modalități de a rula scriptul php descris aici. Interesant este că script-ul php este rulat ca un fișier de comandă pentru consolă și apoi puteți scrie un întreg nor de comenzi și să descrie tot felul de opțiuni pentru fiecare gust. Codul arată așa.


Comanda pentru a executa în cron este calea spre script și numai. Scenariul pune #. și apoi scrieți comenzile de care avem nevoie în bash.

Cazul celui de-al doilea


Executarea scriptului când vi se solicită din browser duce la încheierea paginii în browser. Și când executați scriptul prin cron, acesta imprimă textul paginii în linia de comandă. Pot exista mai multe opțiuni. Sistemul poate fi configurat pentru a salva ieșirea în consola ca fișier. Și acest fișier poate fi amestecat nu în cel mai tipic loc. Treptat, acesta poate ciocni tot spațiul de pe disc. Adesea, în cadrul unui site, dați un loc în 1 Gigabyte, 500 mbyte. Și chiar și acolo au fost de găzduire cu 50 și 10 megaocteți sub site-ul.

Decizia este la fel de veche ca și lumea. Trebuie să redirecționați ieșirea din consola către vid. Aceasta se face prin adăugarea unei comenzi la sfârșitul poruncii de comandă.


Uneori administratorii de găzduire își asumă responsabilitatea de a le pune în mod discret pentru utilizatori. Aici, de asemenea, poate fi o piatră subacvatică.

Cazul celui de-al treilea


Situația este simplă. Trebuie să depanați scriptul inițiat de programator. Puteți încerca să faceți acest lucru cu php, să creați scrierea jurnalelor etc. Dar există o modalitate mult mai ușoară, trebuie să redirecționați ieșirea la un fișier. Comanda este simplă, un parametru suplimentar pentru echipa noastră:








Ar trebui adăugat la sfârșitul comenzii:


Semnul ">" indică sistemului despre redirecționarea ieșirii. Apoi, numele fișierului. În cazul nostru, este specificată calea absolută. Acest exemplu nu este dificil de găsit pe Internet. Dar aici suntem în dificultate, rezultând din cel de-al doilea caz. Un post de îngrijire adaugă automat o redirecționare la ieșirea de la sfârșitul liniei noastre. Și uneori o maschează. Rezultatul este o comandă ca:


Ca rezultat, ieșirea este redirecționată din nou la vid și fișierul de ieșire va fi gol. Aici, hostetul își poate arăta greseala, că este prea ofensat cu setările. Și puteți folosi imediat o cârpă. După comanda de redirecționare către fișier, terminați comanda cu simboluri . Aceste două caractere sunt folosite pe linia de comandă pentru a combina mai multe comenzi într-o singură linie. Ei dau liniei de comandă să înțeleagă că echipa sa terminat și echipa următoare este activată. Este folosit pentru a redirecționa către vid. Ca urmare, redirecționarea către spațiul gol rămâne și fișierul jurnal este înregistrat corect. Exemplu:

Cazul al patrulea


Scriptul a început, dar nu funcționează corect. Motivul - interpretul php pe linia de comandă începe să lucreze configurat corect într-un mediu diferit de cel care ar fi fost atunci când executați prin HTTP-server. Primul semn - script-ul nu găsește fișierele care sunt cu el în același director, și începe să se considere localizat în directorul rădăcină al utilizatorului, care este mai mult de un dosar mai mare decât rădăcina site-ului. Primul lucru de verificat este mediul variabil și matricea super globală $ _SERVER.

Primul lucru pe care îl găsiți pe Internet pentru această problemă este sfatul de a înregistra în krona o comandă de schimbare a directorului:


Dar în unele cazuri acest lucru nu ajută. Există o cale de ieșire. Unul dintre ele este să ia totul în mână și să ceară mediul lipsă pentru ca scenariul să funcționeze. Există mai multe informații despre acest lucru pe Internet.

Uneori este suficient să introduceți următorul cod la începutul scriptului, iar căile devin din nou active.


După cum puteți vedea, totul este scris în funcții și nu trebuie să vă faceți griji cu privire la setări.

concluzie


Asta e tot. Problemele și soluțiile nu sunt banale și, în general, o astfel de combinație de setări nereușite este rară. Mult noroc cu desfășurarea proiectelor dvs. și atunci când vă mutați.

Fără îndoială. Toate acestea pot fi găsite în caietul de sarcini.

Dar când vine vorba de un exemplu concret, mulți parametri adiționali sunt omiteți în el. Care, în funcție de setările de găzduire, poate fi critică sau nu. Sunt auto-învățat și programat în stilul "copiilor paste". Trecerea de la o gazdă la alta te-a făcut nervoasă și ai citit o mulțime de literatură.

Materialul va fi util pentru cei care scriu deja pe php, dar nu intră în linux în special și găzduiește pe el.

$ path_parts = caleinfo ($ _ SERVER ['SCRIPT_FILENAME']); // defini directorul de script-uri
chdir ($ path_parts ['dirname']); // set script de execuție a directorului Există astfel de constante magice convenabile. în special, __FILE__ și __DIR__







Trimiteți-le prietenilor: