Perspective în WP-Cron O introducere în sarcinile de planificare în WordPress

Astăzi vom analiza funcțiile WP-Cron, unul dintre cele mai puțin cunoscute trucuri pe care le puteți folosi pentru a vă distra! Scopul principal este de a stabili programarea sau alte sarcini sensibile la timp. Vom examina cateva trucuri pentru a le folosi si vom identifica, de asemenea, cateva probleme potentiale cu aceasta si cum sa le rezolvam.

WordPress este o piesă puternică de software. Simplitatea ei poate adesea da impresiei greșite utilizatorilor non-tehnici cu privire la lucrările sale interioare. Acest lucru ar fi putut servi în interesul WordPress, deoarece ceva ce se simte simplu și mai ușor de utilizat este în general adoptat de către mase. Cu toate acestea, este important să rețineți că în spatele scenei este o piesă puternică de software care este capabilă să facă destul de mult mai mult decât blogging simplu.

Una dintre caracteristicile din WordPress care este scrisă mai puțin trebuie să fie WP-Cron (verificați pagina codex pe WP-Cron aici). Acum cei dintre voi care s-au ocupat de general cron pe un server Linux cunosc puterea acestei funcții.

Ce este Cron?

Cron este o comandă UNIX pentru programarea de locuri de muncă care urmează să fie executate cândva în viitor. A cron este folosit în mod normal pentru a programa o activitate care este executată periodic. De exemplu, este posibil să utilizați o funcție cron pentru a trimite o notificare în fiecare dimineață. Este, de asemenea, a daemon proces, ceea ce înseamnă că rulează în mod continuu, așteptând să apară anumite evenimente.


Modul în care funcționează

Pe măsură ce WordPress este instalat pe atât de multe setări diferite, pentru a face lucrurile să funcționeze corect, dezvoltatorii WordPress au implementat un pseudo cron care include Funcțiile WP-Cron care ajută la rularea unor sarcini de programare, cum ar fi:

  • Se verifică tema și actualizările pluginului
  • Publicați postările programate
  • Trimiterea pingback-urilor
  • și altele!

Spre deosebire de comenzile cron obișnuite, care rulează la un anumit moment bazat pe setările de server, funcția WP-Cron rulează de fiecare dată când cineva vizitează site-ul web alimentat de WordPress. Acest lucru face ca un site WordPress să funcționeze corect pe diferite tipuri de setări de server, deoarece elimină o mulțime de cerințe specifice serverului. La încărcarea fiecărei pagini, WordPress verifică dacă este nevoie ca WP-Cron să ruleze. Dacă este nevoie, atunci încearcă să facă o cerere prin HTTP la wp-cron.php fişier.

Motivul pentru a apela wp-cron.php se datorează faptului că unele lucrări ar putea dura mai mult timp, iar utilizatorul care solicită pagina WordPress nu poate fi așteptat. Apelarea wp-cron.php ajută la menținerea funcției WP-Cron ca un proces separat în fundal, fără întârzierea încărcării paginii pentru utilizator. Odată ce funcția WP-Cron pornește, aceasta continuă să funcționeze până când toate lucrările necesare sunt finalizate sau până când ajunge la un timp de execuție stabilit în configurația serverului.

Pe baza configurației gazdei web, WP-Cron nu reușește să-și finalizeze activitatea sau este posibil să nu funcționeze deloc. Site-urile cu trafic ridicat se confruntă cu un alt set de probleme cum ar fi multiple procese WP-Cron care rulează în bucle. În general, oamenii dau vina pe WordPress pentru asta, dar nu este neapărat o problemă cu WordPress. Fiecare situație este diferită și pe baza acesteia putem să optimizăm WordPress pentru a rula în cel mai bun mod posibil. Mai jos, veți găsi câteva dintre problemele obișnuite cu care se confruntă oamenii și cum să le remediați.


Unele probleme cu WP-Cron

Problemă: Procesarea mai multor procese WP-Cron pe site-uri cu trafic ridicat

Dacă sunteți administrator de server sau dacă vă gestionați propriul server cu un paravan de protecție, s-ar putea să fi primit e-mailuri din paravanul dvs. de protecție despre un fișier "wp-cron.php" rulat pentru o perioadă lungă de timp. Acest lucru se întâmplă atunci când timpul de execuție al scriptului setat pe server este mai mare de 60 de secunde. Pe măsură ce procesul nu este terminat și din moment ce procesele noi sunt pornite, mai multe instanțe ale procesului WP-Cron rulează pe server.

Acest lucru nu se întâmplă pe un site web cu trafic scăzut, dar dacă site-ul dvs. alimentat cu WordPress are utilizatori simultani la un anumit moment și timpul maxim de execuție a script-ului este ridicat, atunci vor exista multe instanțe ale acestei funcții WP-Cron care rulează. Până la o versiune recentă de WordPress, a existat întotdeauna o problemă a mai multor procese cron care se leagă de aceleași evenimente.

NOTĂ: WordPress 3.3 ne oferă o mai bună încuietoare cron. Acest articol a fost scris exact așa cum a fost lansat WordPress 3.3, care oferă o mai bună blocare a cron-urilor și evitarea multiplelor procese WP-Cron care se leagă de aceleași evenimente.

Problemă: Mesajele programate au ratat

O altă problemă raportată pe scară largă cu anumiți furnizori de servicii de găzduire și câteva site-uri cu trafic foarte scăzut este că posturile programate nu se publică. Deoarece funcția WP-Cron rulează numai atunci când există o solicitare de pagină, dacă nu există solicitări, atunci lucrările programate nu sunt executate.

Notă: Nu există o problemă cu WordPress. De asemenea, din versiunea 3.x acest lucru a fost raportat mult mai puțin. Cu toate acestea, există multe pluginuri pentru a avea grijă de această problemă.

Problema: WP-Cron nu funcționează deloc

Din nou, aceasta este o problemă cu configurarea serverului. Datorită setărilor necorespunzătoare, blocurile de firewall împiedică scrierea de scripturi, astfel încât funcția WP-Cron nu funcționează.


Posibilă soluție la majoritatea problemelor WP-Cron

Pentru a evita ca mai multe instanțe ale WP-Cron să ruleze pe serverul dvs. pentru un singur site web, am încercat să folosesc modul implicit de configurare a lucrărilor cron pe un server Linux (Apache cu cPanel ca panou de control). Beneficiul acestei metode este:

  • Mai mult control asupra funcționării funcției WP-Cron.
  • Evitați mai multe bucle.
  • Dacă dețineți un server cu multe găzduite site-uri WordPress, acest lucru poate reduce încărcarea serverului.

Înainte de a intra în acest aspect, asigurați-vă că gazda web vă permite să configurați lucrările implicite Linux cron. Modul în care este setat acest lucru ar fi diferit în funcție de panoul de control oferit de gazda dvs., dar în acest articol voi oferi un ghid pentru configurarea unui job cron folosind panoul de control cPanel, care este comun pe serverele Linux în zilele noastre.

Pașii pe care i-am urmat au fost:

  1. Dezactivați WP-Cron intern pentru a executa încărcarea paginii.
  2. Configurați o funcție cron care face o solicitare de a primi la fișierul wp-cron.php la intervale regulate pe baza preferințelor dvs..

Da, este atât de simplu. Doi pași pentru a face lucrurile să meargă mai bine.

NOTĂ: Înainte de a urma această metodă, vă rugăm să rețineți că dezactivarea WP-Cron intern poate avea ca rezultat și faptul că site-ul web nu funcționează corect în funcție de configurația dvs. sau de pluginurile utilizate.

1. Dezactivați funcția internă WP-Cron

Deschideți fișierul wp-config.php din Notepad sau editorul ales de dvs. și adăugați cele două linii de mai jos în partea de sus.

 // Dezactivați definiția internă a funcției Wp-Cron ('DISABLE_WP_CRON', true);

Aceasta va opri funcționarea internă WP-Cron din executare și nu va apela fișierul wp-cron.php.

2. Configurați o funcție reală cron din panoul de control al gazdei

Dacă vi se permite să configurați cron jobs, va trebui să configurați un cron ca mai jos:

wget http://www.server.com/wp-cron.php?doing_wp_cron=1> / dev / null 2> & 1


Mai jos sunt pașii pentru a face acest lucru de la o gazdă bazată pe cPanel.

1. Accesați cPanel-ul contului dvs.

De obicei link-ul este http://yourwebsite.com/cpanel sau http://yourwebsite.com:2082. După ce introduceți ID-ul de utilizator și parola și introduceți panoul de control, derulați în jos până la secțiunea "Advanced".

2. Mergeți la Pagina de setări Cron

Faceți clic pe pictograma "Cron Jobs" din secțiunea avansată.

3. Configurați o lucrare Cron

Pe noua pagină veți găsi o secțiune "Adăugați o nouă lucrare Cron", ca cea din imaginea de mai sus. Din câmpul derulant Setări comune, selectați "La fiecare 5 minute ...". Odată ce ați selectat acest lucru, restul câmpurilor vor fi completate automat cu informațiile necesare. În următorul pas îmi voi explica intenția de a stabili un interval de 5 minute pentru a rula scenariul.

În câmpul de comandă, adăugați linia de mai jos. Nu uitați să adăugați adresa corectă a site-ului web.

wget http://www.yourwebsite.com/wp-cron.php?doing_wp_cron=1> / dev / null 2> & 1

În cele din urmă, faceți clic pe butonul "Adăugați o nouă lucrare Cron".

De acum, serverul va face o cerere pentru fișierul wp-cron.php la fiecare 5 minute. Acum, motivul pentru care am setat acest lucru ca 5 minute, se datorează faptului că am setat timpul de execuție a script-ului la 4 minute în loc de 60 de secunde. Acest lucru se face pentru a putea încărca fișiere de imagine mari, procese de backup etc. Cu toate acestea, este posibil să modificați setările și să alegeți alte opțiuni pentru a rula cronul la fiecare 1 minut.

NOTĂ: Acest lucru merge bine pentru site-urile WordPress generale. Pentru cei care folosesc o rețea WordPress, s-ar putea să fie necesare lucruri suplimentare, așa că nu utilizați pașii de mai sus dacă executați versiunea WordPress Multi-site.


Concluzie

Dacă vă confruntați cu probleme sau dacă aveți alte idei, vă rugăm să ne trimiteți comentariile mai jos!

Cod