# Cron-feladat: alapok, cPanel és VPS

> Miért kell a WordPress cronját szerveroldali cronra cserélni, melyek az ajánlott futási időközök, és hogyan állítsd be cPanelben vagy VPS-en.

A FluentCRM az ütemezett feladatokat percenként dolgozza fel, mint minden e-mail-marketing alkalmazás. A megbízható levélküldés megbízható cron-feladaton múlik. A cron-feladatok időzített parancsokat futtatnak, például levélküldést, értesítést vagy adatfrissítést, így a visszatérő feladatokhoz nem kell kézi beavatkozás.

## A cron-feladatok állapota

A **FluentCRM Pro → Beállítások → System Admin Tools → Cron-feladatok képernyője** oldalon látod a FluentCRM ütemezett feladatait, a következő futás idejét, és a **Kézi futtatás** gombbal azonnal el is indíthatod őket.

![A Cron-feladatok képernyője a REST API állapotával és az ütemezett feladatokkal](./kepek/hibaelharitas-cron-figyelo.webp)

*A Cron-feladatok képernyője a REST API állapotával és az ütemezett feladatokkal* (https://minta-bolt.hu/wp-admin/admin.php?page=fluentcrm-admin)

A képen figyeld a „Következő futtatás” sorokat: ha piros „késés” áll mellettük, a cron nem fut időben.

Az ajánlott időközök:

| Feladat | Ajánlott időköz |
|---|---|
| Ütemezett e-mail-küldési feladatok | 1 másodperc és 60 másodperc (1 perc) között |
| Ütemezett e-mail-feldolgozás | 1 és 5 perc között |
| Ütemezett automatizálási feladatok | 1 perc és 60 perc (1 óra) között |

## A WordPress alapértelmezett cronjának cseréje

A WordPress alapból csak akkor futtatja az ütemezett feladatokat, ha valaki meglátogatja az oldalt. Kis forgalmú oldalon emiatt a levélküldés és az automatizálások késnek vagy leállnak. A megoldás két lépés: kikapcsolod a WordPress cronját, majd helyette valódi, szerveroldali cront állítasz be, amely percenként fut.

> **Figyelem**
>
> A két lépés összetartozik. Ha csak az 1. lépést végzed el, a WordPress egyáltalán nem indít cront, és a FluentCRM (meg minden más cronra épülő bővítmény) észrevétlenül leáll. Ha csak az egyiket tudod megcsinálni, inkább egyiket se.

### 1. lépés: a WordPress cronjának kikapcsolása

1. Nyisd meg a `wp-config.php` fájlt.
2. Keresd meg ezt a két sort: `/* Add any custom values between this line and the "stop editing" line. */` és `/* That's all, stop editing! Happy publishing. */`.
3. A kettő közé írd be:

```php
define('DISABLE_WP_CRON', true);
```

### 2. lépés: valódi cron-feladat felvétele

Válaszd a tárhelyednek megfelelő módszert: cPanel és VPS az alábbi két részben, a többi (Cloudways, xCloud, Cron-job.org, EasyCron) a [Cron-feladat tárhelyszolgáltatókkal és külső szolgáltatásokkal](https://hub.hellowp.io/hu/plugins/fluentcampaign-pro/hibaelharitas-cron-szolgaltatok/) fejezetben. Az ellenőrzéshez a beállítás után térj vissza a **Cron-feladatok képernyője** oldalra, és nézd meg, hogy az időközök megfelelnek-e az ajánlottaknak.

## Cron-feladat cPanelben

A cPanel az egyik legelterjedtebb tárhelyvezérlő.

1. A cPanelben nyisd meg a **Cron Jobs** (cron-feladatok) részt.
2. Az időzítő mezőkbe mindenhová `*` kerüljön. Az öt csillag azt jelenti: minden percben, minden órában, minden napon, minden hónapban, a hét minden napján. A legtöbb esetben a percenkénti futás az ajánlott.
3. A parancs mezőbe ezt írd (a `yoursite.com` helyére a saját domainedet):

```bash
wget -q -O - https://yoursite.com/wp-cron.php?doing_wp_cron > /dev/null 2>&1
```

A teljes sor az időzítéssel együtt:

```bash
* * * * * wget -q -O - https://yoursite.com/wp-cron.php?doing_wp_cron > /dev/null 2>&1
```

## Cron-feladat VPS-en (SSH és crontab)

Ha vezérlőpult nélküli VPS-en vagy dedikált szerveren futtatod a FluentCRM-et, a cront parancssorból, a `crontab`-bal állítod be. Ez a legmegbízhatóbb módszer: fix ütemben fut, az oldal forgalmától függetlenül, WP-CLI-vel pedig HTTP-elérés sem kell hozzá.

Előbb kapcsold ki a WordPress cronját (lásd fent), és legyen kéznél:

- SSH-hozzáférés a szerverhez,
- a WordPress telepítési útvonala (például `/var/www/html`),
- a WordPress-fájlok tulajdonosa, gyakran `www-data` (Ubuntu, Debian) vagy `nginx`/`apache`.

### A. módszer: indítás HTTP-n keresztül (mindenhol működik)

Úgy hívja meg a `wp-cron.php` fájlt, mint egy látogató, csak fix ütemben. Csak `wget` vagy `curl` kell hozzá.

1. Csatlakozz SSH-n a szerverhez.
2. Nyisd meg a crontabot a WordPress-fájlok tulajdonosaként, hogy a jogosultságok rendben maradjanak:

```bash
sudo -u www-data crontab -e
```

3. Add hozzá ezt a sort a saját URL-edre cserélve:

```bash
* * * * * wget -q -O - https://yoursite.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1
```

`curl`-lel ugyanez:

```bash
* * * * * curl -s https://yoursite.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1
```

4. Mentsd és lépj ki.

### B. módszer: futtatás WP-CLI-vel (ajánlott)

A WP-CLI közvetlenül a szerveren futtatja a WordPresst, HTTP-kérés nélkül. Ez segít azokon a szervereken, ahol az oldal nem éri el saját magát (loopback-korlátozás, belső DNS, önaláírt tanúsítvány).

1. Ellenőrizd, hogy telepítve van-e a WP-CLI:

```bash
wp --info
```

2. Nyisd meg a crontabot a WordPress-fájlok tulajdonosaként:

```bash
sudo -u www-data crontab -e
```

3. Add hozzá ezt a sort, az útvonalat és a `wp` helyét a sajátodra cserélve:

```bash
* * * * * cd /var/www/html && /usr/local/bin/wp cron event run --due-now >/dev/null 2>&1
```

4. Mentsd és lépj ki.

A WordPress-mappa és a `wp` futtatható fájl teljes útvonalát add meg. A cron minimális környezetben fut, ezért egy parancs, amely a shellben működik, cronból csak abszolút útvonalakkal fut le. A `wp` helyét a `which wp` parancs mutatja.

### Az időzítés értelmezése

A `* * * * *` mezői sorban: perc, óra, hónap napja, hónap, hét napja. Öt csillag = minden perc, ami a FluentCRM időben történő levélfeldolgozásához kell.

### Ellenőrzés

Várj pár percet, majd:

- a FluentCRM-ben a **Beállítások → System Admin Tools → Cron-feladatok képernyője** oldalon nézd meg, megfelelnek-e az időközök az ajánlottaknak;
- WP-CLI-vel listázd az ütemezett eseményeket és a következő futás idejüket:

```bash
cd /var/www/html && wp cron event list
```

Ha az idők percenként előrelépnek, a cron működik.

Ha a levelek mégsem mennek, a két leggyakoribb ok a nem abszolút útvonal és a rossz felhasználóként létrehozott crontab. Győződj meg róla, hogy a WordPress-fájlok tulajdonosaként szerkesztetted a crontabot, és a parancs minden útvonala teljes.
