При работе одного скрипта ложиться весь сайт, как сделать правильно?
По крону; в другом потоке; используя очереди...
Вводных явно недостаточно. 
Непонятно где узкое место. На уровне базы? Или серверу оперативки не хватает? Если второе, то может характеристики сервака увеличить?
Тут можно предложить только экспериментальные решения:

- Перед запуском скрипта создавать копию базы, импортировать в нее, а потом подменять копию базы обновленной копией.

- Разбивать прилетевший json на несколько json меньшего размера, скажем, если там 100 объектов, то, к примеру, на 10 файлов по 10 объектов и загружать их с некоторым временным промежутком.