Почему «тяжёлый» скрипт по CRON выполняется несколько раз?
Очевидно, что минуты скрипту на выполнение не хватает и он обрабатывает одни и те же данные несколько раз. Вам нужно отслеживать, что предыдущий запуск завершился во время старта нового. Если нет - то прерывать выполнение нового запуска и ничего не обрабатывать.
А самым правильным было бы попрофилировать скрипт. Минута - это очень большое время для компьютера и за это время он может очень многое сделать. Скорее всего, у вас неоптимальный алгоритм.
По крону всё что делаете надо писать в какой-то лог дополнительный, например текстовый или БД и в скрипте делать более хитрые условия. Взяли запись 150 записали в текстовик если скрипт успешно отработал в самом конце стираете запись. В начале скрипта проверяете если скрипт взял 150 и в текстовике стоит 150 то что-то не так...