В первом случае это работало без перекрытий, потому что команда выполнялась на переднем плане, и планировщик был занят обработкой этой команды, поэтому новая команда не выполнялась до тех пор, пока текущая команда не будет завершена. withoutOverlapping()
здесь ничего не повлияло.
Так что проблема заключалась в том, что мьютекс не создается с withoutOverlapping()
. Laravel планировщик использует кеш для мьютекса. Переключение драйвера кеша на redis помогло решить эту проблему, теперь withoutOverlapping()
работает как надо.