если вы хотите за один запрос спарсить страницу, вытащить данные и добавить в базу то да через транзакции, но из практики я бы порекомендовал сперва нацелится на скачивание страниц в локальное хранилище
вы можете обработать условие "не успел спарсить 10 страниц и закрылся" например exception и сменить состояние на ERROR, или вернуть обратно в READY
тогда будет повторно запрошен на скачку
в свое время подключил к codeigniter composer и подтянул нужные либы, организовал автозагрузку классов в приложении, CI гулял по приложению в виде DI контейнера, но со временем решил вообще от CI избавиться, теперь это прошлое.
как правило class UserService{ function __construct(UserRepository $userRepo){$this->userRepo = $userRepository;}}
UserRepository impliments CrudRepositiory{ function findById($id){$users = UserQuery::create()->findPk($id)}}