Исправление медлительности сторонних подключений в CS-Cart¶
Последствия¶
Использование внешних подключений (к сторонним сервисам) без таймаутов может привести к сбоям сайта при недоступности этих сервисов. Настоятельно рекомендуем не применять curl_init, file_get_contents и аналогичные функции без ограничения времени выполнения. Для CS-Cart оптимальным решением является использование TyghHttp для внешних запросов, а также соблюдение стандартов кодирования платформы.
Чем опасен код без таймаутов?
- База данных: при исчерпании рабочих процессов MySQL очередь запросов начнет расти, но пользователи не смогут получить доступ к сайту. Это частая причина недоступности ресурса;
- PHP: если все PHP-процессы будут заняты, очередь HTTP-запросов переполнится, что в большинстве случаев приведет к ошибкам подключения к базе данных.
Рекомендация¶
Пример кода, соответствующего стандартам CS-Cart:
<?php
use Tygh\Http;
///...
$url = 'https://some-api.scalehost.ru';
$extra = ['headers' => ['timeout' => 3],
'basic_auth' => [$login,$password]];
$data = ['param' => 'value'];
$response = Http::get($url, $data, $extra);
$response = json_decode($response, true);
//...
Мы не просто хостинг-провайдер. Наша экспертиза основана на глубоком анализе CS-Cart и популярных модулей. Мы выявляем уязвимости, оптимизируем производительность и обеспечиваем стабильность сайтов.
Плохие примеры¶
curl_*¶
Не имеет настроек таймаутов.
<?php
//...
} elseif (!empty($new_image_data_array['url'])) {
$ch = curl_init($new_image_data_array['url']);
$fp = fopen($image_data['absolute_path'], 'wb');
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
fclose($fp);
$optimized = 'Y';
} else {
//...
file_get_contents¶
Устаревший метод из 1990-х, который часто становится причиной проблем.
Нужна помощь?
Если у вас возникли сложности, требуются доработки, бесплатная консультация или оценка проекта — обращайтесь. Мы поможем найти решение для роста вашего бизнеса. Свяжитесь с нами по электронной почте.