<?xml version=»1.0″ encoding=»utf-8″?> | |
<!— EN-Revision: dec1f8445ab2af7fbafef012fb7907ab2cd349b5 Maintainer: tmn Status: ready —> | |
<!— Reviewed: no —> | |
<refentry xml:id=»function.set-time-limit» xmlns=»http://docbook.org/ns/docbook»> | |
<refnamediv> | |
<refname>set_time_limit</refname> | |
<refpurpose>Ограничение времени выполнения скрипта</refpurpose> | |
</refnamediv> | |
<refsect1 role=»description»> | |
&reftitle. description; | |
<methodsynopsis> | |
<type>bool</type><methodname>set_time_limit</methodname> | |
<methodparam><type>int</type><parameter>seconds</parameter></methodparam> | |
</methodsynopsis> | |
<para> | |
Задаёт время в секундах, в течение которого скрипт должен завершить работу. | |
Если скрипт не успевает, вызывается фатальная ошибка. По умолчанию даётся | |
30 секунд, либо время, записанное в настройке | |
<literal>max_execution_time</literal> в &php. ini; (если такая настройка | |
установлена). | |
</para> | |
<para> | |
При вызове <function>set_time_limit</function> перезапускает счётчик с нуля. | |
Другими словами, если время ожидания изначально было 30 секунд, и через 25 секунд | |
после запуска скрипта будет вызвана функция <literal>set_time_limit(20)</literal>, | |
то скрипт будет работать максимум 45 секунд. | |
</para> | |
</refsect1> | |
<refsect1 role=»parameters»> | |
&reftitle. parameters; | |
<para> | |
<variablelist> | |
<varlistentry> | |
<term><parameter>seconds</parameter></term> | |
<listitem> | |
<para> | |
Максимальное время выполнения в секундах. Если задан ноль, время | |
выполнения неограниченно. | |
</para> | |
</listitem> | |
</varlistentry> | |
</variablelist> | |
</para> | |
</refsect1> | |
<refsect1 role=»returnvalues»> | |
&reftitle. returnvalues; | |
<para> | |
Возвращает &true; в случае успешного выполнения, иначе &false;. | |
</para> | |
</refsect1> | |
<refsect1 role=»notes»> | |
&reftitle.notes; | |
<note> | |
<para> | |
Функция <function>set_time_limit</function> и директива | |
<link linkend=»ini. max-execution-time»>max_execution_time</link> | |
влияют на время выполнения только самого скрипта. Время, затраченное на | |
<function>system</function>, потоковые операции, запросы к базам данных | |
и т.п. не включаются в расчёт времени выполнения скрипта. Это не относится | |
к системам Windows, где рассчитывается абсолютное время выполнения. | |
</para> | |
</note> | |
</refsect1> | |
<refsect1 role=»seealso»> | |
&reftitle. seealso; | |
<para> | |
<simplelist> | |
<member><link linkend=»ini.max-execution-time»>max_execution_time</link></member> | |
<member><link linkend=»ini.max-input-time»>max_input_time</link></member> | |
</simplelist> | |
</para> | |
</refsect1> | |
<!— Keep this comment at the end of the file | |
Local variables: | |
mode: sgml | |
sgml-omittag:t | |
sgml-shorttag:t | |
sgml-minimize-attributes:nil | |
sgml-always-quote-attributes:t | |
sgml-indent-step:1 | |
sgml-indent-data:t | |
indent-tabs-mode:nil | |
sgml-parent-document:nil | |
sgml-default-dtd-file:»~/. phpdoc/manual.ced» | |
sgml-exposed-tags:nil | |
sgml-local-catalogs:nil | |
sgml-local-ecat-files:nil | |
End: | |
vim600: syn=xml fen fdm=syntax fdl=2 si | |
vim: et tw=78 syn=sgml | |
vi: ts=1 sw=1 | |
—> |
Как сделать запрос к API?
API InSales позволяет работать с бэк-офисом магазина, используя HTTP-запросы. При помощи API можно получать, добавлять, изменять и удалять информацию о различных объектах (например, товарах, категориях, дополнительных полях и т.д.)
Предполагается, что работа с API организована на внешнем сервере (НЕ на сервере платформы), который отправляет к серверу платформы запросы определенного типа. Для удобства в этой статье будет рассмотрена отправка запросов при помощи приложения Postman. В качестве альтернативы можно использовать Advanced REST Client.
Все доступные запросы в форматах XML и JSON описаны на api.insales.ru. Типовые запросы в формате XML с более подробным описанием можно найти на api.insales.ru.
- Ограничения
- Авторизация
- Общие принципы
- Примеры XML-запросов
- Примеры JSON-запросов
- Возможные коды ответов сервера
Ограничения
На платформе присутствует ограничение в 500 запросов к API в течение 5 минут. Время рассчитывается с момента первого запроса в серии. Количество выполненных запросов в текущем промежутке времени передается в HTTP-заголовке API-Usage-Limit (например, API-Usage-Limit: 1/500).
При достижении лимита доступ к API ограничивается до окончания текущих 5 минут. При этом в HTTP-заголовке Retry-After передается время в секундах до восстановления доступа.
Авторизация
Для отправки запросов к API необходимо создать ключ доступа.
Внимание! Не используйте логин-пароль от бэк-офиса для работы с API, иначе ваш аккаунт может быть заблокирован.
Для создания ключа доступа нужно в бэк-офисе перейти в раздел «Приложения» → «Разработчикам» и нажать кнопку «Создать новый ключ доступа». При необходимости можно указать его название.
Далее в статье мы будем использовать созданные логин (идентификатор) и пароль. Их можно указывать как в адресе запроса:
https://логин:пароль@shop-47483-27.myinsales.ru/admin/orders.xml
Так и в виде HTTP-заголовка Authorization:
Authorization: Basic ZGlnaXRhbC1nb29kczpjNTFjOTA3MDdhMTNjZTNmZmYyMTNhZmJiNWNkMTI3MA==
Вместо shop-47483-27.myinsales.ru необходимо использовать технический или обычный домен вашего магазина. Его можно взять, например, из строки «Пример URL» около выданного ключа доступа.
Общие принципы
API InSales принимает POST, GET, PUT и DELETE-запросы в зависимости от выполняемого действия. Тип и адрес запроса для требуемого действия можно найти на api.insales.ru.
Текст самого запроса должен соответствовать формату XML или JSON. В зависимости от формата меняется адрес запроса и значение HTTP-заголовка Content-Type.
Для XML необходим Content-Type: application/xml
А для JSON — Content-Type: application/json
На скриншоте программы Postman показан выбранный тип запроса, адрес и заголовки. После нажатия кнопки Send появится ответ сервера InSales.
Примеры XML-запросов
Рассмотрим GET-запрос к товару с id 143570988. Такой запрос не требует передачи серверу каких-либо параметров. В качестве адреса необходимо указать https://логин:пароль@shop-47483-27.myinsales.ru/admin/products/143570988.xml
В ответ сервер пришлёт всю доступную информацию об этом товаре.
PUT-запрос служит для обновления данных выбранного объекта. Для обновления названия того же товара с id 143570988 потребуется отправить запрос с телом
<?xml version=»1. 0″ encoding=»UTF-8″?>
<product>
<title>Новое название</title>
</product>
В ответ сервер пришлёт обновлённую информацию о товаре (в том числе новое название). Соответственно, в бэк-офисе также будет отображаться новое название товара. В ответе виден код 200, что означает успешное выполнение операции.
Примеры JSON-запросов
Запросы в формате JSON отличаются адресом и заголовком Content-Type.
GET-запрос отправляется на адрес https://логин:пароль@shop-47483-27.myinsales.ru/admin/products/143570988.json . Ответ, соответственно, также будет этом формате.
Тело PUT-запроса на обновление названия товара выглядит следующим образом:
{
«product»: {
«title»: «Новое название»
}
}
Возможные коды ответов сервера
- 200 — штатный ответ на операцию; означает, что никаких ошибок не возникло
- 201 — в некоторых случаях при создании объектов может вернуться этот код; по смыслу не отличается от кода 200
- 400 — некорректный HTTP-запрос, сервер не смог его обработать
- 401 — не удалось авторизоваться (необходимо проверить логин и пароль)
- 403 — нет прав для данной операции (необходимо проверить настройки прав для приложения)
- 404 — запрашиваемый объект не найден (возможно, его уже удалили или указан неверный id объекта)
- 500 — внутренняя ошибка сервера (возможно, вы некорректно сформировали запрос или что-то сломалось на нашей стороне; необходимо обратиться в тех поддержку)
- 503 — превышен лимит запросов к API
- 504 — сервер не смог обработать ваш запрос за 50 секунд и прервал его выполнение (возможно, вы пытаетесь получить слишком много данных за один запрос)
Яндекс.
XML – Евгений Трофименко: SEO и не толькоЧудеса.
При запросах по датам именно в те даты, когда должен быть выложен общий индекс, что-то сломалось (2017-07-14), поэтому сегодняшний ап обозначен как “изменение без выкладывания”
Причем это с общим индексом. А в даты, когда должен быть быстроробот, число документов ненулевое.
Разбираемся.
Автор Евгений ТрофименкоОпубликовано Рубрики РазноеМетки апдейты Яндекса, Яндекс.XMLДобавить комментарий к записи что-то с Я.XML странное – не отдает еще со вчерашнего вечераЕсли что, мне всю ночь приходили на почту отлупы от Яндекс.XML – типа мой IP не совпадает с разрешенным. Вот почта от моей мониторилки – там написан реальный ip исходящий реальный и неправильный, который определился яндексом:
Типа ip не входит в список разрешенных.
Ну, я такой написал в Яндекс.
Потом подумал – и написал в фаствпс
делаю исходящие запросы к яндексу с ip ***
и *** (Яндекс. xml и internet.yandex.ru)запросы яндексом определяются случайным образом как от ip 52.28.144.83 и 2a05:d014:484:fd80::3:4
с чем это может быть связано?
а вот ответ fastvps, хотя им и понадобилось повтыкать, но ответ от Яндекса пришел позже (ёпт, я первым делом написал им), а решили проблему первыми фаствпс:
Судя по всему, часть серверов Яндекса настроены некорректно и выдаёт неправильную информацию. Относится это к серверам, расположенным в Ирландии.
Поменяли на Вашем сервере nameserver’a, указав для использования сервера Google, они резолвят домен Яндекса на российские сервера. Проверьте, пожалуйста, сейчас информация должна быть корректной.Respectfully, Aleksandr Ivanov
вот FastVPS (осторожно, рефка, я только сейчас ее под это дело и создал), у меня там сервер ровно с тех пор, как там на сервисах был ip 188.40.80.134, а это лет восемь как мне кажется, я историю ip не смотрел
А после того приходит от яндекса – вы такие типа ваще у кого?
Ну, я им тоже прорекламировал, сказал что вот пока вы телитесь они уже проблему решили 🙂
Но вы понимаете, что для вас все это не решили, это вам самим надо решать, ну тут как повезет – смотря в какой Ирландии оказался тот сервер, что вам отвечает
PS
Оказалось, что косяки именно с доменом xmlsearch. yandex.ru, ip от него показывают в Германию, и германский сервер определяет мой IP неправильно
А если пользоваться рекомендованным урлом для отправки XML запроса https://yandex.ru/search/xml? – то все ок, домен yandex.ru
Автор Евгений ТрофименкоОпубликовано Рубрики SEO и поисковики, УрродыблМетки DNS, xmlsearch.yandex.ru, Яндекс.XMLДобавить комментарий к записи сегодня с ночи проблемы с определением IP у Яндекса, ахтунг (косяк с доменом xmlsearch.yandex.ru)Вчера, видимо, вводили обещанный переход на лимиты по сайтам и обновили сетку лимитов.
Раньше было 1000-490-150-34-10-0, сейчас сетка стала более развесистой, стало много уникальных значений.
В предыдущей теме http://webmaster.ya.ru/15375 , кстати, сразу яндекс-человек начал в открытую палиться – что, мол, нулевой лимит может быть из-за низкого рейтинга сайта. Или не попасть в список лимитов:
Lisa
Почему-то в список не попали сайты, у которых изменен регистр через настройки – например, большая буква в начале.m-senin
Сообщите, пожалуйста, (здесь или через службу поддержки) о каком сайте идёт речь.Lisa
Например, не вижу ни в одной из двух вкладок сайта AuraDoma.rum-senin
Сайт получил низкий рейтинг. Связи с изменением регистра нет.
Вот, а Лиза-то думала, что все из-за буков, а тут вона как – изза низкого рейтинга 🙂 Потом-то их попинали и сайты появились. Ну и так понятно – сайты с высокими тицами или посещалкой получают больше.
У меня тоже promosite.ru не попал сразу – всегда подозревал на нем аццкие фильтры !!!11
А что, гадание на лимитах еще не началось?
Нужно срочно делать биржу с возможностью покупки ссылок с сайта с высоким рейтингом ХМЛ!!!!1
Автор Евгений ТрофименкоОпубликовано Рубрики SEO и поисковикиМетки Яндекс.XMLКраудлимитинг ЯндексХМЛинга
***
Яндекс тут на месяц раньше против предыдущего срока решил ввести лимиты на Яндекс-ХМЛ
http://webmaster. ya.ru/replies.xml?item_no=15783
Они не будут зависеть от айпишников и то симок, а только от наличия живых сайтов, каждый их которых будет получать ежедневный лимит ХМЛ по сетке
0 – 34 – 150 – 490 – 1000 – (говорят, есть больше)
запросов в день
Если у кого есть лимиты – сайты и в них нет особой необходимости – прошу пожертвовать их лимиты для сервиса tools.promosite
* Это я прямо сейчас так спрашиваю, безвозмездно – потом внедрю всякие хорошие плюшки для тех, кто пожертововал.
Как это сделать –
1. Добавить сайт в webmaster.yandex.ru
2. Зайти в xml.yandex.ru, “начать работу”, поставить галочку “согласен с условиями” внизу страницы
3. В разделе “Информация о лимитах” http://xml.yandex.ru/limit_info.xml будет список ваших сайтов с возможностью передеть лимит
4. Пожертвуйте лимит на логин yatools на Яндексе. Тогда он торжественно появится в сервисе и я смогу желать общественно полезные запросы и давать общественно полезную инфу!!!1
——–
В акке yatools будет видно, от кого пришел лимит, в будущем это можно будет подтвердить отсылкой письма, и я сделаю хорошие плюшки ))
какие хорошие плюшки я буду м. б внедрять (все или частично) для тех, кто пожертвовал лимиты (кстати, их всегда можно забрать обратно) –
1. работа с crm.promosite.ru по некому числу запросов. Проверяет ежедневно позиции, генерит договора, отчеты, конкурентов по набору запросов, генерит готовые договора с ценами и тп, позволяет клиенту входить и люоваться на позиции и отчеты.
2. либо полный и более удобный доступ к сервисам (без капчи, пробивка пачками запросов), либо я даже чужим (свежерегам) это отключу – ну, ибо нех.
3. планировал и планирую вводить новые сервисы – там оченно много пробивки нужно будет – по входящим ссылкам на сайты по ЯВМ, по работе с базой ссылок рунета по вашему набору запросов.
4. Доска почёта на tools с перечнем хороших людей )
Но, конечно, я пока не знаю, что как будет – главное, что пожертованные лимиты остаются под вашим контролем, их всегда можно обратно отозвать.
Плиз, передайте лимиты Яндекс.XML на акк yatools
Обязуюсь все дела хранить в секрете, если нужно – никому ничо кто где чей сайт – не расскажу
Автор Евгений ТрофименкоОпубликовано Рубрики Фсем Фтыкать!Метки Яндекс.XMLБорются-борются… Кстати, не очень быстро.
Интересно, что это им взбрело. Наверное, еще всяких примесей планируют ввести?
Итак, раньше можно было через Яндекс.XML определять быстророботные включения, СПЕКТР (и ультраробот от бара, пока его не выключили, и буржуйскую базу,пока ее не выключили) по структуре идентификатора документа doc id
Для БР и СПЕКТРа doc id был из трех фрагментов вида 72-2-ZB61AC8DED7F2740E (с разным первым фрагментом для разных баз), а для обычных – из четырех фрагментов.
***
А 27-28 июля все это дело отменили – из doc id отпилили первые фрагменты, остался только фрагмент вида ZB61AC8DED7F2740E (кстати, он остался тот же самый, что последний кусок до отпиливания)
***
PS а возможность определять СПЕКТР таки осталась ))
PPS Кстати, а ведь отпиливание действительно целевое. Оно коснулось только трех- и четырех-фрагментных id, двух- не коснулось. Заодно, кажется, вернули ультраробот.
Автор Евгений ТрофименкоОпубликовано Рубрики Фсем Фтыкать!Метки быстроробот, СПЕКТР, Яндекс.XML24 и 25 ноября прошла 10я ашмановская конференция по оптимизации сайтов, на которой я планировал два, а сделал три доклада.
Первый – про технологию Спектр (презентацию скоро выложу, видео из профессиональной секции, как я понял, у них не бывает). Вторые два – в секции «парад технологий и сервисов», один про seo-CRM для небольших seo-компаний, которым не хочется для этого держать отдельного программиста, третий – про систему ссылочного продвижения «от меня» (сейчас находится в папке на tools, вот домен сменю и отдельно анонс сделаю).
***
Но я не об этом.
Значит, я в докладе и в презентации показывал, как отличать «спектровые» примеси – по идентификатору документа в XML.
Вчера, в момент доклада, было так:
у обычного результата doc (4 фрагмента)
у спектра doc (3 фрагмента, тот же первый фрагмент – 49)
у быстроробота doc (3 фрагмента, другой первый фрагмент)
А сегодня для спектровой примеси стало так:
у спектра doc (3 фрагмента, стал другой первый фрагмент – 52)
🙂
Проверил по своему кешу ХМЛ – так и есть.
Вчера у примесного ssve.ru по «продвижению сайтов» был ID 49-118-Z7725D3069AAE1668, а сегодня уже 52-3-Z7725D3069AAE1668. Забавно, еще и остальные фрагменты сменились, не только базу переименовали.
***
Интересно, зачем они это делают? И ведь какая срочность!
Чтобы никто не догадался и все попячились? 🙂
Смешно, чо.
PS внесу изменения в презентацию, попрошу выложить поправленную ))
Автор Евгений ТрофименкоОпубликовано Рубрики Фсем Фтыкать!Метки СПЕКТР, Яндекс.XMLЯндекс открыл конкурс – Месяц поиска уязвимостей Яндекса
Яндекс уделяет большое внимание вопросам безопасности данных своих пользователей. С целью популяризации информационной безопасности в интернете, мы объявляем месяц поиска уязвимостей — предлагаем всем желающим попытаться найти уязвимости в сервисах Яндекса. Победитель получит $5000.
В течение месяца мы будем принимать сообщения об обнаруженных уязвимостях и 25 ноября 2011 года на конференции по информационной безопасности ZeroNights подведём итоги конкурса.
-у меня, кстати есть уязвимость, которая позволяет с любой страницы любого ЧУЖОГО сайта узнать логин посетителя, если тот залогинен в Яндексе. Может, и еще что-то, глубже не копал. Проверил – работает.
Это считается уязвимостью или нет? нужно кому-нибудь? 🙂
Автор Евгений ТрофименкоОпубликовано Рубрики РазноеМетки Яндекс.XML1 комментарий к записи уязвимости Яндексав сервисе апдейтов уничтожил отдельную пробивку русскоязычного (lang:ru | lang:uk) и буржуйского (lang:en | lang:de | lang:fr) индексов.
И с начала этого года подтер показ отдельных.
Это раньше англоязычная и русская база были отдельно (физически, как сейчас отдельно от основного индекса живут базы быстрых роботов), а сейчас рунет и буржунет вместе, слиты в одну базу. Когда это произошло, я не следил, но, видимо, в конце 2010. Тогда время между RU и EN апами стало малым и разница была чисто за счет случайности.
Были бы архивы ХМЛ, можно было бы посмотреть.
Автор Евгений ТрофименкоОпубликовано Рубрики SEO и поисковикиМетки Яндекс.XMLКажется, рост числа выдаваемых документов с тысяч до миллионов 12-го и 13-го числа связан эээ… с чем-то типа перехода на новое хранилище документов.
Чтобы посмотреть поподробнее, есть ли у кого архив ХМЛ-выдачи по любому запросу за каждый день на месяц назад?
Свои-то я тру регулярно, оставляю только пару последних дней.
Автор Евгений ТрофименкоОпубликовано Рубрики РазноеМетки Яндекс.XMLу Димка один из постов, как я понимаю, про конференцию в Казани:
Поиск яндекса использует разные формулы ранжирования в разных регионах. При этом региональная принадлежность сайта является одним из факторов ранжирования
Яндекс различает 1250 регионов.
чото я не понял, откуда цифра в 1250 регионов. Из головы?
реально же:
число разных ID регионов в Яндекс-баре – 6000+
число разных ID регионов, реально виденных в выдаче по тегу geoa (автоматическое, по выкачанным данным тестового ХМЛ) – 3200+
ЗЫ понял, «различает» здесь – число разных выдач, а не число различаемых регионов.
Автор Евгений ТрофименкоОпубликовано Рубрики РазноеМетки Яндекс.XMLОграничения/фасеты XML-схемы
❮ Предыдущий Далее ❯
Ограничения используются для определения допустимых значений элементов или атрибутов XML. Ограничения на элементы XML называются фасетами.
Ограничения на значения
В следующем примере определяется элемент с именем «возраст» с ограничением. Значение age не может быть меньше 0 или больше 120:
Ограничения на набор значений
Чтобы ограничить содержимое элемента XML набором допустимых значений, мы должны использовать ограничение перечисления.
В приведенном ниже примере определяется элемент «автомобиль» с ограничением. Единственные приемлемые значения: Audi, Golf, BMW:
Приведенный выше пример можно было бы написать так:
Примечание: В этом случае тип «carType» может использоваться другими элементами, поскольку он не является частью элемента «car».
Ограничения на серию значений
Чтобы ограничить содержимое элемента XML для определения серии чисел или буквы, которые можно использовать, мы будем использовать ограничение шаблона.
В приведенном ниже примере определяется элемент под названием «буква» с ограничением. Единственным допустимым значением является ОДНА из СТРОЧНЫХ букв от a до z:
В следующем примере определяется элемент с именем «initials» с ограничением. Единственным допустимым значением является ТРИ ЗАГЛАВНЫХ буквы от a до z:
В следующем примере также определяется элемент «initials» с ограничение. Единственным приемлемым значением является ТРИ НИЖНИХ ИЛИ ПРОПИСНЫХ буквы от a до z:
В следующем примере определяется элемент с именем «выбор» с ограничением. Единственным допустимым значением является ОДНА из следующих букв: x, y, OR z:
В следующем примере определяется элемент с именем «prodid» с ограничение. Единственным приемлемым значением является ПЯТЬ цифр в последовательности, и каждая цифра должна быть в диапазоне от 0 до 9:
Другие ограничения на серию значений
В приведенном ниже примере определяется элемент с именем «letter» с ограничение. Допустимое значение — ноль или более вхождений строчных букв от a до z:
В следующем примере также определяется элемент с именем «letter» с ограничение. Допустимое значение — одна или несколько пар букв, каждая пара состоящее из строчной буквы, за которой следует заглавная буква. Например, «sToP» будет проверяться этим шаблоном, но не «Stop» или «STOP» или «stop»:
В следующем примере определяется элемент с именем «пол» с ограничением. Единственным приемлемым значением является мужской ИЛИ женский:
В следующем примере определяется элемент с именем «пароль» с ограничение. В строке должно быть ровно восемь символов, и эти символы должны быть строчными или прописными буквами от a до z или числами от 0 до 9:
Ограничения на пробельные символы
Чтобы указать, как должны обрабатываться пробельные символы, мы будем использовать ограничение whitespace.
В этом примере определяется элемент с именем «адрес» с ограничение. Ограничение whiteSpace установлено на «сохранить», что означает, что XML-процессор НЕ БУДЕТ удалять пробельные символы:
В этом примере также определяется элемент с именем «адрес» с ограничение. Ограничение whiteSpace установлено на «заменить», что означает, что Процессор XML ЗАМЕНИТ все символы пробела (переводы строки, табуляции, пробелы, и возврат каретки) с пробелами:
В этом примере также определяется элемент с именем «адрес» с ограничение. Ограничение whiteSpace установлено на «свернуть», что означает, что процессор XML УДАЛИТ все символы пробела (переводы строки, табуляции, пробелы, возврат каретки заменяются пробелами, начальными и конечными пробелами удаляются, а несколько пробелов сводятся к одному):
Ограничения длины
Чтобы ограничить длину значения в элементе, мы должны использовать ограничения длины, maxLength и minLength.
В этом примере определяется элемент с именем «пароль» с ограничением. Значение должно состоять ровно из восьми символов:
В этом примере определяется еще один элемент с именем «пароль» с ограничение. Значение должно состоять минимум из пяти символов и максимум из восьми. символов:
Ограничения для типов данных
Ограничение | Описание |
---|---|
перечисление | Определяет список допустимых значений |
дробьЦифры | Указывает максимально допустимое количество знаков после запятой. Должен быть равен или больше нуля |
длина | Задает точное количество символов или элементов списка допустимый. Должен быть равен или больше нуля |
максЭксклюзив | Задает верхнюю границу числовых значений (значение должно быть меньше этого значения) |
макс. включительно | Задает верхнюю границу числовых значений (значение должно быть меньше или равно этому значению) |
максимальная длина | Задает максимальное количество символов или элементов списка допустимый. Должен быть равен или больше нуля |
минЭксклюзив | Указывает нижнюю границу числовых значений (значение должно быть больше этого значения) |
минВключительно | Указывает нижнюю границу числовых значений (значение должно быть больше или равно этому значению) |
минДлина | Указывает минимальное количество символов или элементов списка допустимый. Должен быть равен или больше нуля |
узор | Определяет точную последовательность символов, приемлемо |
Всего цифр | Указывает точное разрешенное количество цифр. Должно быть больше нуля |
белыйКосмос | Указывает, как пустое пространство (перевод строки, табуляция, пробелы и возврат каретки) обрабатывается |
❮ Предыдущий Далее ❯
Ограничения типов данных XML — Техническое сообщество Microsoft
Впервые опубликовано на MSDN 23 мая 2006 г.
Сегодня я хотел бы уделить немного времени, чтобы объяснить некоторые из, казалось бы, произвольных ограничений, наложенных на тип данных XML, в частности те, которые связаны с проверкой ID/IDREF, сложными типами схемы XML, ограничением глубины для данных XML и загадочным «XSD». слишком сложная схема» ошибка.
Проверка ID/IDREF
Если ваш типизированный XML-документ имеет атрибуты типа xs:ID и/или xs:IDREF, SQL Server применит ссылочную целостность для этих атрибутов: в данном документе никакие два атрибута типа xs:ID не могут иметь одинаковое значение, и все атрибуты типа xs:IDREF должны иметь то же значение, что и некоторые атрибуты типа xs:ID.
Это требует, чтобы валидатор помнил, какие значения ID он видел. Поскольку валидатор выполняет только один проход, он также должен помнить все значения IDREF, для которых он еще не встретил соответствующий идентификатор. Таким образом, можно создать XML-документ, который требует произвольного объема памяти для правильной проверки. Чтобы предотвратить атаки типа «отказ в обслуживании», мы ограничили объем памяти, доступной для этой цели, одним мегабайтом. Если вы попытаетесь проверить документ, который превышает это ограничение, проверка завершится с ошибкой 69.69:
Проверка ID/IDREF занимает слишком много памяти. Попробуйте уменьшить количество атрибутов ID и IDREF. Также может быть полезно переупорядочить файл таким образом, чтобы элементы с атрибутами IDREF отображались после элементов, на которые они ссылаются.
Не существует простого способа описать точные условия, необходимые для возникновения этой ошибки, но важными факторами являются количество идентификаторов и атрибутов IDREF с прямыми ссылками, а также длины их значений. Ограничение одинаково для 32-разрядной и 64-разрядной версий SQL Server, поэтому некоторые документы будут проверяться в 32-разрядной версии, но не будут проверяться в 64-разрядной версии из-за большего размера указателя.
Сложные типы XML-схем
При отправке схемы для добавления в коллекцию XML-схем вы можете увидеть сообщение 6998:
Модель типа или содержимого «[TypeName]» слишком сложна. Может потребоваться уменьшить количество перечислений или размер модели содержимого.
Когда тип необходим для проверки, валидатор загружает его определение из метаданных и компилирует его в формат, подходящий для быстрой проверки. Чтобы предотвратить использование каким-либо одним типом слишком большого объема памяти, SQL Server ограничивает размер скомпилированного типа одним мегабайтом. SQL Server компилирует все типы и выполняет эту проверку при импорте схемы, чтобы избежать принятия типов, которые превышают ограничение.
Как и в случае ограничения ID/IDREF, нет простого способа точно описать условия, необходимые для превышения этого ограничения. Наиболее вероятными причинами являются большое количество атрибутов, модель содержимого с большим количеством частиц (xs:sequence, xs:choice, xs:all, xs:element или xs:any) или множество аспектов перечисления. Обратите внимание, что свойства, унаследованные от базового типа или импортированные через ссылки xs:group или xs:attributeGroup, расширяются в определении скомпилированного типа, поэтому тип может превысить ограничение, просто добавив несколько атрибутов к своему базовому типу, если базовый тип близок к пределу.
Однако типы дочерних элементов не влияют на ограничение. Например, у вас не должно возникнуть проблем с определением типа, модель содержимого которого содержит несколько дочерних элементов, каждый из которых имеет другой тип, скомпилированное представление которого равно 500 КБ. Если вы обнаружите, что упираетесь в это ограничение, может оказаться полезным разделить свойства типа между двумя или более подтипами.
«Слишком сложная схема»
При добавлении схемы в коллекцию схем XML вы можете иногда столкнуться с ошибкой 2362:
Слишком сложная схема XSD.
Это несколько вводит в заблуждение; на самом деле это означает, что SQL Server не хватает места в стеке. Мы в значительной степени полагаемся на рекурсию для синтаксического анализа и семантической проверки документов XML-схемы, и в редких (и обычно преднамеренно патологических) случаях это представляет опасность переполнения стека, что может убить процесс и привести к сбою сервера. Чтобы предотвратить это, мы проверяем оставшееся пространство стека в точках рекурсии и прерываем транзакцию, если оно становится достаточно низким, чтобы вызвать беспокойство.
Если вы столкнулись с этой ошибкой и ваша схема не является преднамеренно патологической, вы можете внести некоторые семантически незначительные изменения, которые позволят SQL Server обработать вашу схему. Наиболее распространенными причинами рекурсии являются вложенность и прямые ссылки. Если у вас есть несколько анонимных типов, вложенных в Русская кукла , это может помочь удалить их и переместить определения локального элемента или типа на глобальный уровень. Кроме того, может помочь изменить порядок компонентов схемы, чтобы исключить прямые ссылки, т. е. попытаться убедиться, что определения компонентов предшествуют их ссылкам в порядке документа.
Ограничение глубины XML
Наконец, SQL Server ограничивает глубину любого экземпляра XML, типизированного или нетипизированного, до 128 уровней. Преобразование строки с более глубокой вложенностью в XML завершится ошибкой 6335:
Экземпляр типа данных XML имеет слишком много уровней вложенных узлов. Максимально допустимая глубина составляет 128 уровней.
Мы вводим это ограничение, чтобы гарантировать, что мы сможем создать индекс XML для любого столбца XML. В SQL Server первичный ключ индекса XML состоит из первичного ключа базовой таблицы и дорожка . Максимальная длина ключа индекса в SQL Server — 9.00 байт, поэтому общая длина первичного ключа базовой таблицы и ordpath должна быть не более 900 байт. Мы решили наложить ограничение в 128 байт на первичный ключ базовой таблицы, оставив 772 байта для ordpath. Основываясь на свойствах ordpath, мы решили, что 128 уровней будут хорошим верхним пределом, гарантирующим, что ordpath никогда не превысит максимальный размер.
Мы хотели бы знать, вызывают ли какие-либо из этих ограничений проблемы, поэтому, пожалуйста, оставьте комментарий, если вы столкнулись с каким-либо из них. То, что ограничение глубины вызывает проблемы для SHOWPLAN_XML, является известной проблемой, но нам не известно о практических проблемах с какими-либо другими ограничениями.
Определения пределов обработки (Учебные руководства по Java™ > Java API для обработки XML (JAXP) > Ограничения обработки)
« Предыдущий • След • Следующий »
В следующем списке описаны ограничения обработки XML JAXP, поддерживаемые в JDK. Эти ограничения можно указать через фабричные API, системные свойства и файл jaxp.properties.
entityExpansionLimit
Атрибут | Описание |
---|---|
Имя | http://www.oracle.com/xml/jaxp/properties/entityExpansionLimit |
Определение | Ограничить количество расширений сущностей. |
Значение | Положительное целое число. Значение меньше или равное 0 указывает на отсутствие ограничения. Если значение не целое число, генерируется исключение NumericFormatException. |
Значение по умолчанию | 64000 |
Системное свойство | jdk.xml.entityExpansionLimit |
С | 7у45, 8 |
elementAttributeLimit
Атрибут | Описание |
---|---|
Имя | http://www. oracle.com/xml/jaxp/properties/elementAttributeLimit |
Определение | Ограничьте количество атрибутов, которые может иметь элемент. |
Значение | Положительное целое число. Значение меньше или равное 0 указывает на отсутствие ограничения. Если значение не целое число, генерируется исключение NumericFormatException. |
Значение по умолчанию | 10000 |
Системное свойство | jdk.xml.elementAttributeLimit |
С | 7у45, 8 |
maxOccurLimit
Атрибут | Описание |
---|---|
Имя | http://www.oracle.com/xml/jaxp/properties/maxOccurLimit |
Определение | Ограничить количество создаваемых узлов модели содержимого при построении грамматики для XML-схемы W3C, содержащей атрибуты maxOccurs со значениями, отличными от «unbounded». |
Значение | Положительное целое число. Значение меньше или равное 0 указывает на отсутствие ограничения. Если значение не целое число, генерируется исключение NumericFormatException. |
Значение по умолчанию | 5000 |
Системное свойство | jdk.xml.maxOccurLimit |
С | 7у45, 8 |
totalEntitySizeLimit
Атрибут | Описание |
---|---|
Имя | http://www.oracle.com/xml/jaxp/properties/totalEntitySizeLimit |
Определение | Ограничьте общий размер всех объектов, включающих общие объекты и объекты параметров. Размер рассчитывается как совокупность всех сущностей. |
Значение | Положительное целое число. Значение меньше или равное 0 указывает на отсутствие ограничения. Если значение не целое число, генерируется исключение NumericFormatException. |
Системное свойство | jdk.xml.totalEntitySizeLimit |
Начиная с | 7у45, 8 |
maxGeneralEntitySizeLimit
Атрибут | Описание |
---|---|
Имя | http://www.oracle.com/xml/jaxp/properties/maxGeneralEntitySizeLimit |
Определение | Ограничьте максимальный размер любых общих сущностей. |
Значение | Положительное целое число. Значение меньше или равное 0 указывает на отсутствие ограничения. Если значение не целое число, генерируется исключение NumericFormatException. |
Значение по умолчанию | 0 |
Системное свойство | jdk.xml.maxGeneralEntitySizeLimit |
Начиная с | 7у45, 8 |
maxParameterEntitySizeLimit
Атрибут | Описание |
---|---|
Имя | http://www.oracle.com/xml/jaxp/properties/maxParameterEntitySizeLimit |
Определение | Ограничьте максимальный размер любых объектов параметров, включая результат вложения нескольких объектов параметров. |
Значение | Положительное целое число. Значение меньше или равное 0 указывает на отсутствие ограничения. Если значение не целое число, генерируется исключение NumericFormatException. |
Значение по умолчанию | 1000000 |
Системное свойство | jdk.xml.maxParameterEntitySizeLimit |
Начиная с | 7у45, 8 |
entityReplacementLimit
Атрибут | Описание |
---|---|
Имя | http://www.oracle.com/xml/jaxp/properties/entityReplacementLimit |
Определение | Ограничить общее количество узлов во всех ссылках на сущности. |
Значение | Положительное целое число. Значение меньше или равное 0 указывает на отсутствие ограничения. Если значение не целое число, генерируется исключение NumericFormatException. |
Значение по умолчанию | 3000000 |
Системное свойство | jdk.xml.entityReplacementLimit |
С | 7у111, 8у101 |
maxElementDepth
Атрибут | Описание |
---|---|
Наименование | http://www.oracle.com/xml/jaxp/properties/maxElementDepth |
Определение | Ограничьте максимальную глубину элемента. |
Значение | Положительное целое число. Значение меньше или равное 0 указывает на отсутствие ограничения. Если значение не целое число, генерируется исключение NumericFormatException. |
Значение по умолчанию | 0 |
Системное свойство | jdk. xml.maxElementDepth |
Начиная с | 7у65, 8у11 |
maxXMLNameLimit
Атрибут | Описание |
---|---|
Имя | http://www.oracle.com/xml/jaxp/properties/maxXMLNameLimit |
Определение | Ограничить максимальный размер имен XML, включая имя элемента, имя атрибута и префикс пространства имен и URI. |
Значение | Положительное целое число. Значение меньше или равное 0 указывает на отсутствие ограничения. Если значение не целое число, генерируется исключение NumericFormatException. |
Значение по умолчанию | 1000 |
Системное свойство | jdk.xml.maxXMLNameLimit |
Начиная с | 7у91, 8у65 |
Устаревшие системные свойства
Эти свойства, появившиеся в JDK 5.