• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/classes/general/update_client_partner.php
  • Класс: CUpdateClientPartner
  • Вызов: CUpdateClientPartner::AddMessage2Log
static function AddMessage2Log($sText, $sErrorCode = "")
{
	$MAX_LOG_SIZE = 1000000;
	$READ_PSIZE = 8000;
	$LOG_FILE = $_SERVER["DOCUMENT_ROOT"].US_SHARED_KERNEL_PATH."/modules/updater_partner.log";
	$LOG_FILE_TMP = $_SERVER["DOCUMENT_ROOT"].US_SHARED_KERNEL_PATH."/modules/updater_partner_tmp1.log";

	if ($sText <> '' || $sErrorCode <> '')
	{
		$old_abort_status = ignore_user_abort(true);

		if (file_exists($LOG_FILE))
		{
			$log_size = @filesize($LOG_FILE);
			$log_size = intval($log_size);

			if ($log_size > $MAX_LOG_SIZE)
			{
				if (!($fp = @fopen($LOG_FILE, "rb")))
				{
					ignore_user_abort($old_abort_status);
					return false;
				}

				if (!($fp1 = @fopen($LOG_FILE_TMP, "wb")))
				{
					ignore_user_abort($old_abort_status);
					return false;
				}

				$iSeekLen = intval($log_size-$MAX_LOG_SIZE/2.0);
				fseek($fp, $iSeekLen);

				do
				{
					$data = fread($fp, $READ_PSIZE);
					if ($data == '')
						break;

					@fwrite($fp1, $data);
				}
				while(true);

				@fclose($fp);
				@fclose($fp1);

				@copy($LOG_FILE_TMP, $LOG_FILE);
				@unlink($LOG_FILE_TMP);
			}
			clearstatcache();
		}

		if ($fp = @fopen($LOG_FILE, "ab+"))
		{
			if (flock($fp, LOCK_EX))
			{
				@fwrite($fp, date("Y-m-d H:i:s")." - ".$sErrorCode." - ".$sText."n");
				@fflush($fp);
				@flock($fp, LOCK_UN);
				@fclose($fp);
			}
		}
		ignore_user_abort($old_abort_status);
	}
}