12 вопросов
Файловая блокировка (flock) при старте; advisory lock в Redis или БД по ключу (например, имя скрипта). Один процесс держит lock на время выполнения. При падении - таймаут или очистка lock по PID.
Cron для периодичности; скрипт должен быть идемпотентным и ограниченным по времени. Очереди (RabbitMQ, Redis, Laravel Queue) для отложенных задач с точным временем. Мониторинг пропущенных запусков и алерты.
Чтение потоком (stream), по строкам или чанками. Не загружать файл в память целиком. Для CSV - fgetcsv в цикле. Параллельная обработка чанков при необходимости (разбиение по смещениям или по строкам).
Профилирование (Xdebug, Blackfire); логирование времени по этапам; анализ slow query log БД; проверка N+1; кеш и сеть. Метрики и трейсинг в проде. Поиск узкого места по цепочке запрос-БД-кеш-внешние API.
Счетчик запросов по ключу (IP, user_id) в Redis с TTL (окно) или скользящее окно. При превышении - 429. Алгоритмы: фиксированное окно, token bucket. В PHP - middleware с обращением к Redis. Распределенная реализация - один Redis или согласованный ключ.
Не хранить полные данные карт; использовать токенизацию провайдера (Stripe, и др.). Идемпотентность запросов (idempotency key). Webhook с проверкой подписи. Логирование для аудита без чувствительных данных. Соответствие PCI DSS при хранении.
Централизованное логирование и мониторинг (Sentry, Rollbar, ELK). Алерты по уровню и частоте. Трейсинг запросов. Health checks и метрики. Резервное логирование в файл при недоступности сервиса.
Батчами (LIMIT + цикл), чтобы не блокировать таблицу и не исчерпывать память. Транзакции на батч. При возможности - один запрос с временной таблицей или bulk update. Индексы и мониторинг блокировок.
Вынос строк в словари по локали; подстановка при выводе. Форматы дат, чисел, валют по локали. В PHP - gettext, или массивы/файлы переводов. Хранение контента в БД по языку. Определение языка из заголовка или профиля.
Зависит от типа задачи (I/O или CPU). Для I/O - больше воркеров (порядок числа ядер или выше). Для CPU-bound - по числу ядер. Нагрузочное тестирование; мониторинг длины очереди и времени обработки. Автоскейлинг по метрикам.
Retry с backoff при подключении; очередь запросов в приложении или локальный буфер (с риском потери при падении). Circuit breaker для избежания каскадных сбоев. Алерты и мониторинг. Graceful degradation - отложить не критичные задачи.
Lock (mutex) - один владелец; эксклюзивный доступ к ресурсу. Семафор - ограничение числа одновременных доступов (N слотов). Семафор для ограничения параллелизма (например, не более 5 одновременных запросов к API).