[CODE]protected static function _getParams($componentName, $ID = '', $paramsPage = '', $SITE_ID = false)
{
if (!empty($SITE_ID)) {
self::$SITE_ID = $SITE_ID;
}
if ($componentName instanceof \CBitrixComponent) {
$componentName = $componentName->getName();
} elseif ($componentName instanceof \CBitrixComponentTemplate) {
$componentName = $componentName->__component->getName();
}
$_cachePath = self::getCachePath($componentName);
$_cacheString = self::getUniqString($componentName, $ID);
$arParams = array();
$retry = false;
$countRequest = 0;
$ob = new \Yenisite\Core\Cache();
do {
if ($ob->InitCache(self::CACHE_TIME, $_cacheString, $_cachePath, self::CACHE_DIR)) {
$arParams = $ob->GetVars();
if (!($ob->getClearCache() || $ob->getClearCacheSession())) break;
$retry = true;
}
if ($retry) break;
if (empty($paramsPage)) break;
if (!empty($arParams)) break;
if (!empty($_GET[self::$UPDATE_PARAM]) || !empty($_REQUEST[self::$UPDATE_PARAM])) break;
$protocol = \CMain::IsHTTPS() ? 'https://' : 'http://';
$obHTTP = new HttpClient();
$obHTTP->get($protocol . $_SERVER['HTTP_HOST'] . $paramsPage);
if ($countRequest > 10) {
$retry = true;
$countRequest = 0;
}else{
$countRequest++;
}
} while ($retry == false);
unset($ob);
return $arParams;
}
[/CODE]Проблема в следующем, есть выше представленная функция, если у нас есть параметры в кеше то все ок, но в каких-то случаях их у нас нет, поэтому через HttpClient мы делаем запрос на страницу с компонентом, для получения его параметров, точнее, после того как отработает страница на которую был сделан запрос компоненты сохранят свои параметры в кеше, и мы их подхватываем. Проблема в следующем, все работает на процентов 80 нормально, но не понятно почему, иногда раз в день появляются бесконечные запросы, пока сервер не перезагрузишь они так и будут отправляться. Используется многосайтовость, на двух других сайтах шаблоны сайтов не заточены под данную систему. Не могу понять то ли дело в самой функции (может запрос отправляется на на тот сайт, или выход не срабатывает), то ли дело в HttpClient, то ли дело в двух других шаблонах сайта. Может у кого есть идеи? Так же не знаю как можно стабильно воспроизводить данную проблему. Она появляется раз в день, в разное время.
{
if (!empty($SITE_ID)) {
self::$SITE_ID = $SITE_ID;
}
if ($componentName instanceof \CBitrixComponent) {
$componentName = $componentName->getName();
} elseif ($componentName instanceof \CBitrixComponentTemplate) {
$componentName = $componentName->__component->getName();
}
$_cachePath = self::getCachePath($componentName);
$_cacheString = self::getUniqString($componentName, $ID);
$arParams = array();
$retry = false;
$countRequest = 0;
$ob = new \Yenisite\Core\Cache();
do {
if ($ob->InitCache(self::CACHE_TIME, $_cacheString, $_cachePath, self::CACHE_DIR)) {
$arParams = $ob->GetVars();
if (!($ob->getClearCache() || $ob->getClearCacheSession())) break;
$retry = true;
}
if ($retry) break;
if (empty($paramsPage)) break;
if (!empty($arParams)) break;
if (!empty($_GET[self::$UPDATE_PARAM]) || !empty($_REQUEST[self::$UPDATE_PARAM])) break;
$protocol = \CMain::IsHTTPS() ? 'https://' : 'http://';
$obHTTP = new HttpClient();
$obHTTP->get($protocol . $_SERVER['HTTP_HOST'] . $paramsPage);
if ($countRequest > 10) {
$retry = true;
$countRequest = 0;
}else{
$countRequest++;
}
} while ($retry == false);
unset($ob);
return $arParams;
}
[/CODE]Проблема в следующем, есть выше представленная функция, если у нас есть параметры в кеше то все ок, но в каких-то случаях их у нас нет, поэтому через HttpClient мы делаем запрос на страницу с компонентом, для получения его параметров, точнее, после того как отработает страница на которую был сделан запрос компоненты сохранят свои параметры в кеше, и мы их подхватываем. Проблема в следующем, все работает на процентов 80 нормально, но не понятно почему, иногда раз в день появляются бесконечные запросы, пока сервер не перезагрузишь они так и будут отправляться. Используется многосайтовость, на двух других сайтах шаблоны сайтов не заточены под данную систему. Не могу понять то ли дело в самой функции (может запрос отправляется на на тот сайт, или выход не срабатывает), то ли дело в HttpClient, то ли дело в двух других шаблонах сайта. Может у кого есть идеи? Так же не знаю как можно стабильно воспроизводить данную проблему. Она появляется раз в день, в разное время.