ТёмнаяМатерия: если по get/post, то отрабатывает веб-сервер. Если из командной строки, то отрабатывает консольный php (cli).
По вашим условиям без бд-/файл-лока тогда понять запущен ли скрипт не реально.
3. Для деплоя мне понравился DeployBot. Есть интеграция с Digital Ocean и не только. Неплохая кастомизация. Но если он сгодится для деплоя в прод, то не уверен удастся ли его настроить для деплоя в закрытых окружениях. Если нет, то phing неплохой вариант, хотя и не самый удобный (xml-скриптинг конечно тот еще ад), слышал об альтернативах, но не вспомню.
Илья Шатохин: зачем делать для них репликацию? Шардинг же. Вычисляете например по id пользователя на каком сервере будут лежать его файлы и вперед. Если же надо для отказоустойчивости, то есть решения пусть не моментальной, но всё же синхронизации.
Илья Шатохин: в чем проблема с десятками тысяч файлов? У ext4 проблемы нет. Есть и другие файловые системы в случае чего. Работает это в разы быстрее, чем дергать БД, поскольку одного nginx достаточно для раздачи.
Непубличные файлы просто нужно хранить так, чтобы наобум нельзя было угадать их URL. Что-то вроде этого используется в VK