PROJECT_DIR="/var/www/html/cms-propay"
cd $PROJECT_DIR || exit

NUM_WORKERS=30
RUN_TIME=300
# emergency và cashout đặt đầu để worker ưu tiên kéo trước (queue: callback, transfer)
QUEUE_LIST="emergency,cashout,createOrder,high,export,default"

clear_queue() {
    echo "========== CLEARING QUEUE =========="
    php artisan queue:clear --queue=default --force
    php artisan queue:clear --queue=high --force
    echo "========== QUEUE CLEARED =========="
}

start_schedule() {
    echo "========== STARTING SCHEDULE =========="
    nohup php artisan schedule:work > "$PROJECT_DIR/schedule.log" 2>&1 &
    echo "Schedule started"
}

start_short_schedule() {
    echo "========== STARTING SHORT SCHEDULE =========="
    nohup php artisan short-schedule:run > "$PROJECT_DIR/short_schedule.log" 2>&1 &
    echo "Short schedule started (PID: $!)"
}

echo "========== STARTING $NUM_WORKERS WORKERS =========="
for i in $(seq 1 $NUM_WORKERS); do
    nohup php artisan queue:work --queue=$QUEUE_LIST --timeout=300 --tries=3 > "$PROJECT_DIR/queue_$i.log" 2>&1 &
    echo "Worker $i started (PID: $!)"
done

start_schedule
start_short_schedule

while true; do
    sleep $RUN_TIME
    clear_queue
done
