Пример #1
0
 public static function submitData($limit = 5)
 {
     if (!Catalog::isOn()) {
         return '\\' . __METHOD__ . '(5);';
     }
     $ids = array();
     $rows = array();
     $r = static::getList(array('order' => array('ID' => 'ASC'), 'limit' => $limit));
     while ($row = $r->fetch()) {
         $rows[] = array('type' => $row['TYPE'], 'data' => $row['DATA']);
         $ids[] = $row['ID'];
     }
     if (!empty($rows)) {
         // get queue size
         $totalCount = static::getCount();
         $queueSize = $totalCount > $limit ? $totalCount - $limit : 0;
         // send data
         $data = \http_build_query(array('op' => 'e', 'aid' => Counter::getAccountId(), 'ad[cd][value]' => base64_encode(json_encode($rows)), 'ad[cd][queue]' => $queueSize));
         if (strlen($data) > 30000) {
             if ($limit > 1) {
                 return '\\' . __METHOD__ . '(' . max(1, $limit - 1) . ');';
             }
         }
         $f = fsockopen('bitrix.info', 80, $errno, $errstr, 3);
         if ($f) {
             $out = "POST /bx_stat HTTP/1.1\r\n";
             $out .= "Host: bitrix.info\r\n";
             $out .= "Content-type: application/x-www-form-urlencoded\r\n";
             $out .= "Content-length: " . strlen($data) . "\r\n";
             $out .= "User-Agent: Bitrix Stats Counter\r\n";
             $out .= "Connection: Close\r\n";
             $out .= "\r\n";
             $out .= $data . "\r\n\r\n";
             fwrite($f, $out);
             $response = '';
             while (!feof($f)) {
                 $response .= fgets($f, 128);
             }
             fclose($f);
             // delete rows if service received data
             if (strpos($response, 'uid')) {
                 foreach ($ids as $id) {
                     static::delete($id);
                 }
             }
         }
     }
     return '\\' . __METHOD__ . '(5);';
 }
Пример #2
0
	else
	{
		$this->AbortResultCache();
		ShowError(GetMessage("CATALOG_ELEMENT_NOT_FOUND"));
		@define("ERROR_404", "Y");
		if($arParams["SET_STATUS_404"]==="Y")
			CHTTP::SetStatus("404 Not Found");
	}
}

if(isset($arResult["ID"]))
{
	if (isset($arResult['counterData']))
	{
		// send counter data
		if (\Bitrix\Main\Analytics\Catalog::isOn())
		{
			\Bitrix\Main\Analytics\Counter::sendData('ct', $arResult['counterData']);
		}
	}

	if ('N' != $arParams['USE_ELEMENT_COUNTER'])
	{
		if (Loader::includeModule('iblock'))
		{
			CIBlockElement::CounterInc($arResult["ID"]);
		}
	}

	if (!isset($_SESSION["VIEWED_ENABLE"]) && isset($_SESSION["VIEWED_PRODUCT"]) && $_SESSION["VIEWED_PRODUCT"] != $arResult["ID"] && Loader::includeModule("sale"))
	{
Пример #3
0
?>
			</div>
			<div class="clb"></div>
		</div>
	</div>

	<div class="adm-c-bigdata-activate">
		<div class="adm-c-bigdata-activate-title"><?php 
echo GetMessage('BIGDATA_HOWTO_ENABLE');
?>
</div>
		<div class="adm-c-bigdata-activate-content">
			<ul class="adm-c-bigdata-activate-content-task-list">

				<?php 
$available = \Bitrix\Main\Analytics\Catalog::isOn();
?>
				<li <?php 
echo $available ? 'class="good"' : '';
?>
>
					<?php 
echo GetMessage('BIGDATA_ENABLED');
?>
					<?php 
if (!$available) {
    ?>
						<div class="adm-c-bigdata-activate-content-task-list-warning"><span><?php 
    echo GetMessage('BIGDATA_DISABLED');
    ?>
</span></div>
Пример #4
0
 public static function submitData($limit = 50)
 {
     if (!Catalog::isOn()) {
         return '\\' . __METHOD__ . '();';
     }
     $rows = array();
     $r = static::getList(array('order' => array('ID' => 'ASC'), 'limit' => $limit));
     while ($row = $r->fetch()) {
         $rows[$row['ID']] = array('type' => $row['TYPE'], 'data' => $row['DATA']);
     }
     if (!empty($rows)) {
         // get queue size
         $totalCount = static::getCount();
         $queueSize = $totalCount > $limit ? $totalCount - $limit : 0;
         // set limit
         $dataSizeLimit = 45000;
         // make an optimal dataset
         $dataSize = strlen(base64_encode(json_encode(array_values($rows))));
         // records to delete
         $toDelete = array();
         if ($dataSize > $dataSizeLimit) {
             $reducedRows = array();
             foreach ($rows as $id => $row) {
                 $rowSize = strlen(base64_encode(json_encode(array_values($row))));
                 $reducedDataSize = strlen(base64_encode(json_encode(array_values($reducedRows))));
                 if ($rowSize > $dataSizeLimit) {
                     // abnormally big row, delete it
                     $toDelete[] = $id;
                 } elseif (!empty($reducedRows) && $reducedDataSize + $rowSize > $dataSizeLimit) {
                     // it's enough
                     break;
                 } else {
                     $reducedRows[$id] = $row;
                 }
             }
             $rows = $reducedRows;
         }
         if (!empty($rows)) {
             // if there are still some data, send it
             $data = \http_build_query(array('op' => 'e', 'aid' => Counter::getAccountId(), 'ad[cd][value]' => base64_encode(json_encode(array_values($rows))), 'ad[cd][queue]' => $queueSize));
             $f = fsockopen('bitrix.info', 80, $errno, $errstr, 3);
             if ($f) {
                 $out = "POST /bx_stat HTTP/1.1\r\n";
                 $out .= "Host: bitrix.info\r\n";
                 $out .= "Content-type: application/x-www-form-urlencoded\r\n";
                 $out .= "Content-length: " . strlen($data) . "\r\n";
                 $out .= "User-Agent: Bitrix Stats Counter\r\n";
                 $out .= "Connection: Close\r\n";
                 $out .= "\r\n";
                 $out .= $data . "\r\n\r\n";
                 fwrite($f, $out);
                 $response = '';
                 while (!feof($f)) {
                     $response .= fgets($f, 128);
                 }
                 fclose($f);
                 // delete rows if service received data
                 if (strpos($response, '200 OK')) {
                     $toDelete = array_merge($toDelete, array_keys($rows));
                 }
             }
         }
         // delete abnormally big and sent rows
         foreach ($toDelete as $id) {
             static::delete($id);
         }
     }
     return '\\' . __METHOD__ . '();';
 }