#!/usr/bin/env bash
# ============================================================
#  NexSMS Queue Worker — Shell Script for Cron
#
#  Purpose: Run the CI4 Spark SMS worker command, ensuring only
#           one instance runs at a time using a lock file.
#
#  Cron setup (edit with: crontab -e):
#    * * * * * /var/www/html/queue_worker.sh >> /var/log/sms_worker.log 2>&1
#
#  Adjust APP_DIR to match your deployment path.
# ============================================================

APP_DIR="/var/www/html"
PHP_BIN="php"
LOCK_FILE="/tmp/nexsms_worker.lock"
BATCH_SIZE=500

# Ensure only one instance runs at a time
exec 9>"$LOCK_FILE"
if ! flock -n 9; then
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] Worker already running, skipping."
    exit 0
fi

echo "[$(date '+%Y-%m-%d %H:%M:%S')] Starting SMS worker (batch=$BATCH_SIZE)..."

cd "$APP_DIR" || { echo "ERROR: Cannot cd to $APP_DIR"; exit 1; }

"$PHP_BIN" spark sms:worker --batch="$BATCH_SIZE"

EXIT_CODE=$?
echo "[$(date '+%Y-%m-%d %H:%M:%S')] Worker finished with exit code $EXIT_CODE."

# Release lock
flock -u 9
