Технически ни один язык программирования не является безопасным для транзакций, это база данных, которая должна быть безопасной для транзакций. Поэтому, если выполняемый скрипт / код по какой-либо причине умирает или отключается, транзакция будет откатываться.
Поместить запросы в цикл - очень плохая идея, если только он не предназначен для работы в пакетном режиме и разбивки гораздо большего набора на более мелкие части. Настройка таймеров и лимитов PHP - это, как правило, решение с ограничением пробела, вы по-прежнему зависите от браузера клиента, если используете веб-интерфейс для запуска сценария.
Если у меня есть длинный процесс, который должен быть запущен браузером, я «отключаю» процесс от браузера и веб-сервера, чтобы контроль возвращался пользователю во время выполнения скрипта. PHP-скрипты, запускаемые из командной строки, могут работать часами, если хотите. Затем вы можете использовать AJAX или перезагрузить страницу, чтобы проверить ход выполнения долгосрочного сценария.
Есть проблемы безопасности с этим кодом, но чтобы «отключить» процесс от PHP, работающего под чем-то вроде Apache:
exec("nohup /usr/bin/php -f /path/to/script.php > /dev/null 2>&1 &");
Но это не имеет ничего общего с тем, что PHP подходит для больших проектов или безопасен для транзакций. PHP может использоваться для больших проектов, но, поскольку по умолчанию нет кода, который остается «резидентным» между попаданиями, он может работать медленнее, если он не разработан правильно. Кроме того, поскольку нет поддержки пространства имен, вы должны планировать заранее, если у вас большая команда разработчиков.
Хорошо для системы на основе Java потратить несколько минут на запуск, инициализацию и загрузку всех объектов по умолчанию. Но это недопустимо с PHP. PHP будет больше планировать для больших систем. Вопрос в том, когда время, сэкономленное при использовании PHP, теряется на дополнительное время планирования, необходимое для большой системы?