Если код работает иногда, это говорит о том, что это не проблема с вашим кодом, поэтому есть две логические области для потенциальной вины:
1) Загрузка веб-сервера
Это может быть ваш сервер зависает. Если сервер (не только ваш сайт - учтите это, если вы используете общий хостинг) испытывает большую нагрузку, то вашему серверу может потребоваться слишком много времени для выполнения запроса curl. для борьбы с этим попробуйте увеличить время ожидания по запросу, используя следующее:
CURLOPT_CONNECTTIMEOUT
2) Ограничение скорости Twitter
Твиттер ограничивает количество вызовов API, которые вы можете совершать с одной авторизованной учетной записи в час (я считаю, что число составляет около 100, проверьте их документацию API). Если вы достигнете этого предела, вам будет отказано в дальнейших вызовах до 1-летнего юбилея. первого звонка. Для борьбы с этим нужно либо, чтобы задание cron запускало curl с заданным интервалом и кэшировало результат в текстовом файле или базе данных, либо сохраняло время каждого сделанного запроса и использовало IF, чтобы разрешить только один запрос каждые 2 или 3 минуты, кэшируйте результаты и вытащить результаты из кеша.
Каждый раз, когда происходит загрузка страницы, вызов API Twitter является пустой тратой ресурсов и может сократить время загрузки страницы.