Данный код может выполняться очень долго только по одной причине.
По причине того что Вы очень долго получаете данные с удаленного сайта.
А происходить это может по двум причинам: либо у Вас медленный интернет-канал между Вами и сервером, либо удаленный сервер очень долго отвечает на Ваш запрос.
И кстати curl_close($ch);