Declanșarea cron prin apelarea wp-cron.php din linia de comandă în loc de wget?

26 aug. 2015, 10:16:57
Vizualizări: 15.6K
Voturi: 9

Poți declanșa wp-cron.php folosind de exemplu $ php /calea/către/wordpress/wp-cron.php în loc să folosești metoda wget cu comanda wget -q -O - http://exemplu.com/wp-cron.php>/dev/null 2>&1?

2
Comentarii

Întrebarea este: De ce ai vrea/avea nevoie să faci asta în acest fel?

norman.lol norman.lol
25 mar. 2019 22:22:04

@leymannx din multiple motive, poate sistemul tău nu are wget? Sarcinile de tip Cron nu ar trebui să necesite stratul web și ar trebui să poți rula cron chiar și fără ca întregul site să fie funcțional.

Tuomas Valtonen Tuomas Valtonen
27 sept. 2019 14:01:02
Toate răspunsurile la întrebare 2
6
10

Analizând documentația din fișierul wp-cron.php se pare că este absolut posibil să apelăm simplu $ php wp-cron.php:

/**
 * Un pseudo-daemon CRON pentru programarea sarcinilor WordPress
 *
 * WP Cron este declanșat când site-ul primește o vizită. În scenariul
 * în care un site poate să nu primească suficiente vizite pentru a executa
 * sarcinile programate în timp util, acest fișier poate fi apelat direct
 * sau prin intermediul unui server CRON daemon de X ori.
 *
 * Definirea DISABLE_WP_CRON ca true și apelarea directă a acestui fișier sunt
 * mutual exclusive, iar cea din urmă nu se bazează pe prima pentru a funcționa.
 *
 * Cererea HTTP către acest fișier nu va încetini vizitatorul care ajunge
 * să viziteze atunci când job-ul cron trebuie să ruleze.
 *
 * @package WordPress
 */

Ce altceva poți face din linia de comandă este să folosești wp-cli pentru asta.

$ cd /calea/către/wordpress
$ wp cron event run --due-now

Pentru a forța declanșarea unui singur cron independent de programarea sa setată, rulează:

$ wp cron event run my_custom_cron_event

Sau ca o singură linie de comandă pentru a fi folosită într-un crontab pentru a rula la fiecare oră întreagă + 15 minute (14:15, 15:15, 16:15 etc.):

15 * * * * cd /calea/către/wordpress && wp cron event run --due-now > /dev/null 2>&1
25 mar. 2019 22:21:01
Comentarii

Există vreun avantaj în utilizarea curl în locul instrumentului CLI wp?

Barry Chapman Barry Chapman
26 ian. 2020 08:06:12

@BarryChapman – Curl este practic doar altă cerere de pagină. Prin urmare, poate încetini puțin site-ul când rulează cron-ul.

norman.lol norman.lol
26 ian. 2020 17:56:34

@BarryChapman Presupun că orice cod care depinde de $_SERVER sau alte variabile de sesiune nu va funcționa corect când este apelat din linia de comandă. În afară de asta, ar trebui să fie în regulă.

alexg alexg
4 mar. 2021 19:29:32

Merită menționat că wp-cli rulează cron prin HTTP. Nu este exact la fel ca apelarea wp-cron din CLI PHP, deoarece, de exemplu, max_execution_time poate afecta rulările cron. Dacă aveți probleme cu expirarea timpului la sarcinile cron, aș recomanda să apelați direct wp-cron.php, fără a implica wp-cli.

Gabor Garami Gabor Garami
15 mar. 2023 11:40:05

@GaborGarami wp-cli face o cerere HTTP din linia de comandă??

norman.lol norman.lol
16 mar. 2023 12:42:32

Pe baza testelor mele, da.

Gabor Garami Gabor Garami
13 oct. 2023 13:45:06
Arată celelalte 1 comentarii
2

Da, este posibil să declanșezi rularea cron-urilor doar cu $ php /calea/catre/wordpress/wp-cron.php.

Alternativ, poți folosi curl:

*/10 * * * * curl http://exemplu.com/wp-cron.php > /dev/null 2>&1

Și poți adăuga următoarea linie în fișierul tău wp-config.php pentru a dezactiva rularea cron-urilor din cererile HTTP:

define('DISABLE_WP_CRON', true);
26 aug. 2015 10:32:34
Comentarii

Dacă folosești curl, acesta este tot o cerere HTTP, deci probabil nu este o idee bună să dezactivezi DISABLE_WP_CRON?

Bananaapple Bananaapple
10 iul. 2020 11:20:45

@Bananaapple – Prin apelarea directă a wp-cron.php ocolești acest lucru. Dar în același timp, DISABLE_WP_CRON previne declanșarea cron de la vizitatorii care navighează pe orice pagină a site-ului tău. Vezi https://kinsta.com/knowledgebase/disable-wp-cron/ și în comentariile din fișier din răspunsul meu de mai sus Definirea DISABLE_WP_CRON ca true și apelarea directă a acestui fișier sunt mutual exclusive și cea din urmă nu se bazează pe prima pentru a funcționa.

norman.lol norman.lol
10 iul. 2020 11:45:04