#!/bin/bash
#
# Lintello Prospect — WORKER : consommation bornée des files (Vision v2)
# Draine les files prioritisées : prospect_harvest (récolte client) AVANT prospect_mine
# (fond de tâche). Sur OVH mutualisé (pas de process 24/7), on lance ce script en cron
# FRÉQUENT avec un --time-limit sous l'intervalle du cron.
#
# ⮕ Sur VPS, préférer un worker systemd permanent (voir bloc SYSTEMD en bas), et
#   désactiver ce cron.
#
# === Installation OVH (manager) ===
#   - Fréquence : toutes les 5-10 min ; --time-limit doit rester < intervalle.
#   - CHMOD 755. Commande = chemin absolu du script (SANS ":").

set -u

# --- À ADAPTER au déploiement -------------------------------------------------
PHP_BIN="/usr/local/php8.4/bin/php"
PROJECT_DIR="/homez.2122/ttuzcgq/lintello/dev/htdocs"
APP_ENV="prod"
TIME_LIMIT=280        # secondes ; garder < intervalle de cron
MSG_LIMIT=300         # nb max de messages par passe
MEMORY_LIMIT="256M"
# ------------------------------------------------------------------------------

LOG_DIR="$PROJECT_DIR/var/log/cron"
LOG="$LOG_DIR/prospect-worker.log"
mkdir -p "$LOG_DIR"

cd "$PROJECT_DIR" || { echo "[$(date '+%F %T')] ERREUR: cd $PROJECT_DIR impossible" >> "$LOG"; exit 1; }

# Verrou : évite deux workers concurrents (le rate-limit global reste indépendant).
LOCK="$PROJECT_DIR/var/prospect-worker.lock"
if command -v flock >/dev/null 2>&1; then
  exec 9>"$LOCK"
  flock -n 9 || { echo "[$(date '+%F %T')] worker déjà en cours, skip" >> "$LOG"; exit 0; }
fi

echo "---- [$(date '+%F %T')] consume (limit=$MSG_LIMIT, time-limit=${TIME_LIMIT}s)" >> "$LOG"
"$PHP_BIN" bin/console messenger:consume prospect_harvest prospect_mine \
  --time-limit="$TIME_LIMIT" --limit="$MSG_LIMIT" --memory-limit="$MEMORY_LIMIT" \
  --env="$APP_ENV" --no-interaction >> "$LOG" 2>&1
echo "     (exit=$?)" >> "$LOG"

# === SYSTEMD (VPS, recommandé pour l'échelle 100-1000) ========================
# /etc/systemd/system/prospect-worker@.service :
#   [Unit]
#   Description=Lintello Prospect worker %i
#   [Service]
#   ExecStart=/usr/bin/php /var/www/lintello/bin/console messenger:consume \
#     prospect_harvest prospect_mine --time-limit=3600 --env=prod
#   Restart=always
#   [Install]
#   WantedBy=multi-user.target
#   → systemctl enable --now prospect-worker@1 prospect-worker@2   (scale horizontal)
