# Core 0.54.0 — notatki techniczne

## Dlaczego OVH zawiesza CRON

Najczęstszy problem to pojedyncze wywołanie `mail()`, które potrafi wisieć długo z powodu problemu transportu poczty, DNS, limitu hostingu albo kolejki MTA. Jeśli dzieje się to wewnątrz głównego CRON, cały CRON może zostać oznaczony w OVH jako zawieszony.

## Nowe podejście

Core 0.54.0 izoluje pojedynczą wysyłkę do child-procesu:

```text
cron/mail_queue_send_one_cli.php
```

Parent-worker może zabić child-proces po limicie sekund i przejść dalej albo zakończyć bez wiszenia.

## Bezpieczne ustawienia startowe

```text
mail_queue_batch_limit = 5
mail_queue_runtime_limit_sec = 35
mail_queue_send_timeout_sec = 18
mail_queue_transport_mode = fork
mail_queue_allow_inline_send = 0
mail_queue_lock_ttl_sec = 180
```

## Jeżeli proc_open jest niedostępny

Worker nie powinien używać inline mail() domyślnie, bo to może znowu zawieszać CRON. W takim przypadku panel pokaże, że nie ma child-process transportu. Można świadomie włączyć inline, ale to mniej bezpieczne na OVH.

## Następny krok

Następny etap może dodać zewnętrzny transport SMTP/API, np. SMTP z timeoutem socketowym albo provider transakcyjny, żeby całkowicie ominąć problem wiszącego `mail()` na hostingu.
