Declanșarea cron prin apelarea wp-cron.php din linia de comandă în loc de wget?
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
?

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

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

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

@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ă.

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.

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);

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

@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
.
