Вы описали задачи, но не описали каким образом конкретно их реализуете, какими средствами. Если через вызов внешних команд exec и подобные, то у этой функции есть код ответа, который она получает от внешней программы, как правило если выполнение успешное - код ответа 0.
Либо вы можете написать дополнительную функцию, которая будет сообщать статус выполнения той или иной задачи в какой-то файл, например, json. А ожидающая программа в цикле может проверять статус завершения, и когда он нужный переходить к другому заданию.
php последовательный язык и только сейчас переходит к асинхронности постепенно, так что да, команды выполняются одна за другой, ко второй команде не должен переходить, если первая не выполнена или не вернула исключение.