https://wiki.umisoft.ru/index.php?title=%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_ajax_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F_%D0%9E%D0%B1%D0%BC%D0%B5%D0%BD_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%BC%D0%B8_%D0%B4%D0%BB%D1%8F_%D0%B2%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B9&feed=atom&action=historyИспользование ajax модуля Обмен данными для выполнения определенных операций - История изменений2024-03-28T08:52:58ZИстория изменений этой страницы в викиMediaWiki 1.31.0https://wiki.umisoft.ru/index.php?title=%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_ajax_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F_%D0%9E%D0%B1%D0%BC%D0%B5%D0%BD_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%BC%D0%B8_%D0%B4%D0%BB%D1%8F_%D0%B2%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B9&diff=2994&oldid=prevCmac в 10:59, 8 сентября 20112011-09-08T10:59:41Z<p></p>
<table class="diff diff-contentalign-left" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="ru">
<td colspan="2" style="background-color: #fff; color: #222; text-align: center;">← Предыдущая</td>
<td colspan="2" style="background-color: #fff; color: #222; text-align: center;">Версия 10:59, 8 сентября 2011</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l40" >Строка 40:</td>
<td colspan="2" class="diff-lineno">Строка 40:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Потом, в модуле "Обмен данными" необходимо создать сценарий импорта, указать наш новый тип импорта, и также необходимо указать любой файл на сервере. В методе '''readDataBlock''' необходимо прописать php-код для выполнения и настроить условие остановки ajax-цикла. После настройки метода '''readDataBlock''' можно запустить сценарий импорта стандартным способом.</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Потом, в модуле "Обмен данными" необходимо создать сценарий импорта, указать наш новый тип импорта, и также необходимо указать любой файл на сервере. В методе '''readDataBlock''' необходимо прописать php-код для выполнения и настроить условие остановки ajax-цикла. После настройки метода '''readDataBlock''' можно запустить сценарий импорта стандартным способом.</div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">[[Категория:Модуль Обмен данными]]</ins></div></td></tr>
</table>Cmachttps://wiki.umisoft.ru/index.php?title=%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_ajax_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F_%D0%9E%D0%B1%D0%BC%D0%B5%D0%BD_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%BC%D0%B8_%D0%B4%D0%BB%D1%8F_%D0%B2%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B9&diff=2725&oldid=prevVITL': Новая страница: «В некоторых задачах, необходимо выполнить достаточно ресурсоемкие операции, как по нагру…»2011-07-27T21:56:24Z<p>Новая страница: «В некоторых задачах, необходимо выполнить достаточно ресурсоемкие операции, как по нагру…»</p>
<p><b>Новая страница</b></p><div>В некоторых задачах, необходимо выполнить достаточно ресурсоемкие операции, как по нагрузке на процессор, так и длительные по времени. Возникает необходимость разбить выполнение скрипта на части, в решении этой задачи поможет ajax-овый механизм выполнения операций, данные будут выполняться по частям, при повторном автоматическом запуске скрипта, будет определено смещение, и операция продолжится с места остановки.<br />
<br />
Итак, что же необходимо сделать, для использования готового функционала модуля "Обмен данными". Аналогично данной статье [[Добавление нового формата экспорта данных]] добавляем новый тип импорта данных, указываем идентификатор '''ajax'''.<br />
<br />
Файл '''ajaxSplitter.php''', следующего содержания:<br />
<source lang="php"><br />
<?php<br />
class ajaxSplitter extends umiImportSplitter {<br />
<br />
protected function readDataBlock() {<br />
// xml-пустышка<br />
$doc = new DOMDocument("1.0", "utf-8");<br />
$doc->formatOutput = XML_FORMAT_OUTPUT;<br />
$rootNode = $doc->createElement("umidump");<br />
$doc->appendChild($rootNode);<br />
$rootNode->setAttribute('version', '2.0');<br />
// текущее смещение<br />
$index = ($this->offset) ? $this->offset : 0;<br />
//Какие-то действия, в зависимости от текущего смещения<br />
<br />
<br />
//тестовый лог<br />
//file_put_contents(CURRENT_WORKING_DIR .'/traceajax.txt', $index.';', FILE_APPEND);<br />
<br />
$this->offset = $index + 1;<br />
// условие для остановки цикла, которое необходимо настроить<br />
if($this->offset > 100) $this->complete = true; <br />
return $doc;<br />
}<br />
<br />
public function translate(DomDocument $doc) {<br />
return $doc->saveXML();<br />
}<br />
<br />
}<br />
?><br />
</source><br />
<br />
необходимо скопировать в папку: '''\classes\system\subsystems\import\splitters\'''<br />
<br />
Потом, в модуле "Обмен данными" необходимо создать сценарий импорта, указать наш новый тип импорта, и также необходимо указать любой файл на сервере. В методе '''readDataBlock''' необходимо прописать php-код для выполнения и настроить условие остановки ajax-цикла. После настройки метода '''readDataBlock''' можно запустить сценарий импорта стандартным способом.</div>VITL'