Новости Joomla

Astroid обновился до версии 3.3.7!

Astroid обновился до версии 3.3.7!

Astroid — это мощный фреймворк для дизайнеров и разработчиков, позволяющий создавать адаптивные, быстрые и надежные веб-сайты и шаблоны на базе Joomla.

Главное в новой версии:

-   Исправлена загрузка файлов макетов

В предыдущем крупном релизе Astroid 3.3.6 были сделаны важные улучшения:

Основные моменты:

  • Улучшенный UI/UX в ключевых областях конфигурации
  • Повышенная стабильность и согласованность в Layout Builder и Form Builder
  • Исправления ошибок на основе отзывов сообщества
  • Улучшенная обработка визуальных эффектов, границ и шрифтов

Улучшения:

  • Обновленный UX Layout Builder
  • Улучшенный эффект предзагрузчика
  • Улучшенный стиль границ
  • Улучшенный UI/UX вкладки «Layout» в Template Options

Исправления ошибок:

  • Решены проблемы с некорректными динамическими значениями
  • Исправлен Color Transform при прокрутке
  • Устранены проблемы с работой Form Builder в Article Layout и Module Layout Builder
  • Исправлена проблема с созданием ненужных временных файлов при обработке шрифтов

Скачать: https://github.com/templaza/astroid-framework/releases/tag/v3.3.7

Как тестировать Joomla PHP-разработчику? Компонент Patch tester.

👩‍💻 Как тестировать Joomla PHP-разработчику? Компонент Patch tester.Joomla - open source PHP-фреймворк с готовой админкой. Его основная разработка ведётся на GitHub. Для того, чтобы международному сообществу разработчиков было удобнее тестировать Pull Requests был создан компонент Patch Tester, который позволяет "накатить" на текущую установку Joomla именно те изменения, которые необходимо протестировать. На стороне инфраструктуры Joomla для каждого PR собираются готовые пакеты, в которых находится ядро + предложенные изменения. В каждом PR обычно находятся инструкции по тестированию: куда зайти, что нажать, ожидаемый результат. Тестировщики могут предположить дополнительные сценарии, исходя из своего опыта и найти баги, о которых сообщить разработчику. Или не найти, и тогда улучшение или исправление ошибки быстрее войдёт в ядро Joomla. Напомню, что для того, чтобы PR вошёл в ядро Joomla нужны минимум 2 положительных теста от 2 участников сообщества, кроме автора. Видео на YouTubeВидео на VK ВидеоВидео на RuTubeКомпонент на GitHub https://github.com/joomla-extensions/patchtester@joomlafeed#joomla #php #webdev #community

0 Пользователей и 1 Гость просматривают эту тему.
  • 9 Ответов
  • 1826 Просмотров
*

Paha_web

  • Захожу иногда
  • 166
  • 1 / 0
  • Еще правок хотите?
Всем привет. Мучаюсь уже 3й день.
Пишу парсер XML документа. Документ очень большой, 34тыс. записей. Начал использовать библиотеку simplexml_load_file, но потом оказалось что она не тянет большие файлы, пришлось юзать XMLReader. Вобщем парсить получилось. Потом столкнулся с другой проблемой, - при генерации запросов в БД формировалась переменная из кучи запросов, около 34тыс. INSERT или UPDATE, так вот, с такой огромной переменной не получалось выполнить запрос в БД. Я решил создавать простые txt файлы по 400 запросов в каждом. Файлы теперь создаются с готовыми запросами, теперь осталось тупо взять и считать запросы из каждого файла и выполнить их.
Я беру открываю 1 файл(любой) там где 400запросов, генерирую запрос и пытаюсь его выполнить в MySQL, ничего не получается. Страница грузится грузится, а потом просто останавливается. У меня ощущение что не хватает опять памяти. Я не знаю что делать, как быть с этой проблемой! Помогите пжл., очень срочно нужно доделать. Спасибо.

Вот ниже кусок кода, тут только чтение из файла и выполнение запроса.

Код
class ObjectsModelUpdate_xml extends JModel
{
   
   
    function del_queries_files() {
 
        $dir  = 'update_xml/update_queries/';
        foreach (glob($dir.'*.*') as $filename) {
            //echo "$filename size " . filesize($filename). "\n<br>";
            JFile::delete($filename);
        }
 
    }
   
 
   
 
    function save_queries($count,$sql){
       
        if($count==400){
            $this->del_queries_files();
        }
       
        echo $count.'<br>';
 
         $file="update_xml/update_queries/$count.txt";
 
        if( !file_exists($file)) {
            $fp = fopen($file, "w");
            fwrite($fp, $sql);
         }
        fclose ($fp);   
     
     
     }
 
 
    function read_queries_files() {
 
        $dir  = 'update_xml/update_queries/';
        foreach (glob($dir.'*.*') as $filename) {
           
            $this->read_queries($filename);   
 
        }
 
    }
 
     
    function read_queries($file){
     
        if(file_exists($file)) {
            $fp = fopen($file, "r");
            $sql = "";   
            while(!feof($fp)) {
                $sql .=fgets($fp); //тут читаю из файла и генерирую запрос. Может тут загвоздка?
            }
        }
        fclose ($fp);   
       // unset($fp);
     
        if($sql){
            $this->insert_in_db($sql);
        }
       
      //  unset($sql);
       
      //  echo memory_get_usage;
   
    }
   
   
    function insert_in_db($query){
        $db=& JFactory::getDBO();   
        $db->setQuery($query);
             if(!$db->queryBatch()) {
                 echo __LINE__.$db->stderr();
             }
       // unset($query);
         
    }   
   
   
    function getUpdate()
    {
 
       
      set_time_limit(0); 
      ini_set('memory_limit', '-1');
 
 
        $this->read_queries('update_xml/update_queries/400.txt');
 
   }
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
разбивай файл XML на файлы поменьше, далее обрабатывай свои файлы в директории аяксом отработал удалил вернул управление и так далее
вот как разбивать файл $f
Код: php-brief
	private function division($f)
{
$file = fopen(JPATH_ROOT . '/tmp/' . $f, "r"); // исходник
$name = JPATH_ROOT . '/tmp/'; // результат
$rash = ".xml"; // расширение файла с результатами
$max = 7; // количество объектов которое запихать в 1 файл
$count = 1; // счетчик
$cnt = 0; // счетчик
$out = $this->new_file($name . $count . $rash);

// идем на начало контента
do {
$str = fgets($file, 10000);
if (strtolower(trim($str)) == "<ads>") break;
} while ($str);


// копируем в файлы
while ($str = fgets($file, 10000)) {
// поиск конца блока
$flag = strtolower(trim($str)) == "</object>";
if ($flag && $cnt + 1 == $max) {
$cnt = 0;
fputs($out, $str . "</ADS>\n</LISTINGS>");
fclose($out);
$count++;
$out = $this->new_file($name . $count . $rash);
$isave = false;
} // копируем все подряд
else {
if ($flag) {
$cnt++;
$isave = true;
}
fputs($out, $str);
}

}

fclose($out);
fclose($file);
unlink($name . $count . $rash); // удаляем последний файл :)
}

читай файл
Код: php-brief
function read_queries($file){
return file_get_contents($file);
}
и не стоит это даже в функцию оборачивать. Так как это обертка стандартной. И зачем спамить в разных отделах
http://joomlaforum.ru/index.php/topic,295707.msg
*

Paha_web

  • Захожу иногда
  • 166
  • 1 / 0
  • Еще правок хотите?
Спасибо. Прошу прощения за спам.
Сейчас читает и записывает только один файл. Когда я ставлю в цикл все файлы, то все равно загрузка прекращается.
Что делать?
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
здесь должна быть связка. HTML файл отправляет AJAX ззапрос php файл обрабатывает. Берет в каталоге один файл выполняет с него запросы и удаляет. По завершению отправляет ответ файлу HTML, тот соответственно опять посылает запрос на обработку следующего. И так до тех пор пока в каталоге не останется файлов для обработки
*

Paha_web

  • Захожу иногда
  • 166
  • 1 / 0
  • Еще правок хотите?
Ага. Спасибо. Смотрю все файлы пишет через раз, 2 раза записало а на третий нехочет  :(. Придется аяком делать. Нехотелось...  ;D
*

Paha_web

  • Захожу иногда
  • 166
  • 1 / 0
  • Еще правок хотите?
Скажите а как увеличить время ожидания ответа AJAX ?

Пробую
Код
function send_oper(file,oper){

                    var fd = new FormData();
                    fd.append('file', file);
                    fd.append('oper', oper);
                    $.ajax({
                      timeout:500000,
                      type: 'POST',
                      url: 'index.php?option=com_objects&task=update_xml&format=raw',
                      data: fd,
                      processData: false,
                      contentType: false,
                      dataType: "json",
                      success: function(data) {


timeout:500000, но все равно ожидание только 1минута. А разбитие на файлы через AJAX идет минут 5.
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Обязательно такой XML парсить и в базе хранить? Может быть хранить его как XML а выборку делать, используя xslt + xpath ? Будет работать в разы быстрее! Это конечно сложнее но я бы так и поступил..
интернет-блог: http://websiteprog.ru
*

Paha_web

  • Захожу иногда
  • 166
  • 1 / 0
  • Еще правок хотите?
Да обязательно. Я уже все сделал. Осталось увеличить время ожидания. МОжно конечно сделать через редирект создание файлов с запросами, но я хочу сделать все аяксом.
Я вот пробую ставить время ожидания до минуты, тогда все срабатывает. А если больше минуты, то стопорится на 1 минуте хоть тресни.
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Я вот пробую ставить время ожидания до минуты, тогда все срабатывает. А если больше минуты, то стопорится на 1 минуте хоть тресни.
Вы создайте колбэк функцию на ошибке, возможно на время ожидания ответа влияет опция max_execution_time в настройках php
интернет-блог: http://websiteprog.ru
*

Paha_web

  • Захожу иногда
  • 166
  • 1 / 0
  • Еще правок хотите?
Ничего не получается. Зависает скрипт опять.  :'( Проект завалил... :(

Вот код:

Код
<?php
// Запрет прямого доступа.
defined('_JEXEC') or die;

jimport( 'joomla.application.component.modellist' );
jimport('joomla.utilities.date');

class ObjectsModelUpdate_xml extends JModel
{
    var $count_queries = 500; // по сколько запросов запихивать в файл
    var $objects;
    var $sub_objects;
  
    function del_queries_files() {
        $dir  = 'update_xml/update_queries/';
        foreach (glob($dir.'*.*') as $filename) {
            JFile::delete($filename);
        }
    }

    function save_queries($id_count,$count,$sql){

        if($id_count<10){
            $id_count='0'.$id_count;
        }
         $file="update_xml/update_queries/".$id_count."_".$count.".txt";
        
        file_put_contents($file, $sql);
          
     }

    function read_queries_files() {
        $dir  = 'update_xml/update_queries/';
        $files = "";

        foreach (glob($dir.'*.*') as $filename) {
            $files .= $filename.',';
        }

        return substr($files, 0, -1); ;
        
     }

    
    function read_queries($file,$oper){
        $sql = file_get_contents($file);
        if($sql){
             $this->insert_in_db($sql,$file,$oper);
        }
    }
    
    
    function insert_in_db($query,$file,$oper){
        $db=& JFactory::getDBO();    
        
      //  echo $query;
        
        $db->setQuery($query);
             if(!$db->queryBatch()) {
                $type = 'error';
                //$type = 'success';
      //          echo __LINE__.$db->stderr();
             }else{
                JFile::delete($file);
                $type = 'success';
                $message = 'OK';
             }
          // echo $oper;  
          $result = array('type'=>$type,'oper'=>$oper,'message'=>$message,'files'=>$this->read_queries_files());
          print json_encode($result);                
    }  

    
    function parse_objects(){

       //$this->del_queries_files();
        
       $xmlstr = simplexml_load_file(JURI::base().'update_xml/SiteData.xml');        
  
   // if($xmlstr){
  
       $message = "";
       $message_report = "";
       $count_object_add = 0;
       $count_object_upd = 0;
       $sql = "";
       $sql2 = "";
       $sql3 = "";
       $sql4 = "";
       $sql5 = "";

       $db=& JFactory::getDBO();

       foreach ($xmlstr->Buildings->Building as $building){ //объекты
         $blockid = (int)$building->attributes()->blockid;
         $districtid = (int)$building->attributes()->districtid;
    
        $BlockSubways = $xmlstr->xpath("/Ads/BlockSubways/Subway[@blockid=\"$blockid\"]");    
        $count_BlockSubways = count($BlockSubways);
          $metro = '';
          for($i=0;$i<=$count_BlockSubways;$i++){
            if($i<=$count_BlockSubways-1){
                $metro .= $BlockSubways[$i]->attributes()->name;  
                if($i<$count_BlockSubways-1){
                $metro .= ', ';    
                }
            }
          }  
          
          /////////////////////////////////////////////////////////////////////////

                    $Block = $xmlstr->xpath("/Ads/Blocks/Block[@id=\"$blockid\"]");    
                    $address = $Block[0]->attributes()->street;
                    $address_in_map = $Block[0]->attributes()->latitude.','.$Block[0]->attributes()->longitude;
                    $nazvanie_doma = $Block[0]->attributes()->title;
                    $builderid = (int)$Block[0]->attributes()->builderid;
                    $Builder = $xmlstr->xpath("/Ads/Builders/Builder[@id=\"$builderid\"]");
                    $builder_name = $Builder[0]->attributes()->name;
                    $District = $xmlstr->xpath("/Ads/Districts/District[@id=\"$districtid\"]");
                    $rayon = $District[0]->attributes()->name;

                    if((int)$District[0]->attributes()->regionid == 2){
                        $rayon = $rayon.' Л.О.';
                    }

          $counter = 0;  
          $building_id  = (int)$building->attributes()->id;
          $buildingtype = $building->attributes()->buildingtype; //тип постройки
          $dead_date = $building->attributes()->endingperiod;
          $dead_year = date('Y',strtotime($dead_date));
          $dead_mounth = date('m',strtotime($dead_date));
          $dead_kvartal = intval((date($dead_mounth)+2)/3);
          $corp = $building->attributes()->corp;
          $floors = $building->attributes()->floors;
          $metro = addslashes($metro);  
          $rayon = addslashes($rayon);  
          $address = addslashes($address);  
          $address_in_map = addslashes($address_in_map);  
          $nazvanie_doma = addslashes($nazvanie_doma.' '.$corp);  
          $builder_name = addslashes($builder_name);  
          $buildingtype = addslashes($buildingtype);  
          
          $sql_count = "SELECT COUNT(*) FROM `#__objects`
                        WHERE `building_id` = '$building_id'";
                          
          $db->setQuery($sql_count);
          $count = $db->loadResult();

          $oper = "";
            
          if($count == 0){
                    $sql .= " INSERT INTO `#__objects` (
                    `added_by`,
                    `metro_name`,
                    `raion`,
                    `dead_year`,
                    `dead_kvartal`,
                    `dead_mounth`,
                    `address`,
                    `address_in_map`,
                    `modified`,
                    `modified_by`,
                    `created`,
                    
                    `zastroy`,
                    `name`,
                    `korpus`,
                    `type`,
                    `flors`,
                    `building_id`
                    )
                    
                    VALUES   (
                    '956',
                    '$metro',
                    '$rayon',
                    '$dead_year',
                    '$dead_kvartal',
                    '$dead_mounth',
                    '$address',
                    '$address_in_map',
                    'NOW()',
                    '956',
                    'NOW()',
                    '$builder_name',
                    '$nazvanie_doma',
                    '$corp',
                    '$buildingtype',
                    '$floors',
                    '$building_id'
                    )
                    ; ";

                    $oper = "создан";
                    $count_object_add++;
                    
          }else{
                    $sql .= " UPDATE `#__objects` SET
                            `metro_name`='$metro',
                            `raion`='$rayon',
                            `dead_year`='$dead_year',
                            `dead_kvartal`='$dead_kvartal',
                            `dead_mounth`='$dead_mounth',
                            `address`='$address',
                            `address_in_map`='$address_in_map',
                            `zastroy`='$builder_name',
                            `name`='$nazvanie_doma',
                            `korpus`='$corp',
                            `type`='$buildingtype',
                            `flors`='$floors'
                             WHERE `building_id` = '$building_id'; ";
                    
                     $oper = "обновлен";  
                     $count_object_upd++;  
                    }
                
                    if($oper){
                        $message .= "<tr><td>Объект ".$oper."</td><td>".$nazvanie_doma;
                        $message_report .="Объект ".$oper." | Название объекта - ".$nazvanie_doma;
                        if($corp){
                            $message .=", корпус ".$corp;
                            $message_report .=", корпус ".$corp;  
                        }
                       $message_report .=" \r\n";
                       $message .= "</td></tr>";
                    }
                    
            $counter++;        
          
            } ///конец объкты
            
          
                $this->del_queries_files(); //удаляе все файлы с запросами
                $this->save_queries(0,$counter,$sql); //сохраняем сгенерированные запросы в файл
                
                $this->read_queries($this->read_queries_files());
    
        
          
          
           //JFactory::getApplication()->redirect('/index.php?option=com_objects&task=update_xml&oper=parse_sub_objects');
                            
         // $result = array('oper'=>'parse_objects','type'=>'success','message'=>'save in file objects','files'=>$this->read_queries_files());
      
        //  print json_encode($result);              

    }  
  


    function search_object_id($val){
        
        
        //$val = '88';
        
        foreach ($this->objects as $key => $value) {
         if ($value['building_id']==$val) {
         $found = $value['object_id'];
         break;
         }
        }
        
        return $found;        
        
    }


    function search_sub_object_id($val){
        
        
        //$val = '88';
    
        foreach ($this->sub_objects as $key => $value) {
         if ($value['apartment_id']==$val) {
         $found = $value['sub_object_id'];
         break;
         }
        }
        
        return $found;        
        
    }
    
    
    function parse_sub_objects(){

//квариры
      //    echo 111;  
      //  $this->del_queries_files();

    

        $db=& JFactory::getDBO();
        
         // $sql2="";
          $count_kvart_add = 0;
          $count_kvart_upd = 0;
          $count_kvart_not_add = 0;
          $count_kvart_not_add_message = '';  
          $count_kvart_not_add_message_report = '';
        
        $counter = 0;  
          
        $counter2 = $this->count_queries;
        
        //echo $counter2;
        
        $counter3 = 0;


            $sql2 = "SELECT object_id,building_id FROM `#__objects`";
            $db->setQuery($sql2);
            $this->objects = $db->loadAssocList();            


            $sql3 = "SELECT sub_object_id,apartment_id FROM `#__sub_objects`";
            $db->setQuery($sql3);
            $this->sub_objects = $db->loadAssocList();            


 //           echo $this->search_object_id(88);

//$category=array();
//$category[]=array('idx'=>"12",'ParentId'=>"987",'name'=>"987");
//$category[]=array('idx'=>"18",'ParentId'=>"9487",'name'=>"986");

//print_r($category);

//$found = false;
//$t = microtime(1);

//echo number_format(microtime(1)-$t,5,'.','');
//echo "\n";
//var_dump($found);

//echo "=============\n";




        
        $reader = new XMLReader();
        $reader->open('update_xml/SiteData.xml');

        $msg = '';
        
        $sql4 = '';

        while ($reader->read()) {


            if ($reader->name == "Apartment") {
          //      echo '<p>'.$reader->getAttribute("kvnumber").'</p>';

                $building_id = (int)$reader->getAttribute("buildingid");
                $apartment_id = (int)$reader->getAttribute("id");

        //    $sql2 = "SELECT object_id FROM `#__objects`
        //            WHERE `building_id` = '$building_id'";
        //    $db->setQuery($sql2);
        //    $object_id = $db->loadResult();            
            
            $object_id = '1';
            
            $object_id = $this->search_object_id($building_id);            
            
         //   $sql3 = "SELECT sub_object_id FROM `#__sub_objects`
         //            WHERE `apartment_id` = '$apartment_id'";
         //   $db->setQuery($sql3);
        //    $sub_object_id = $db->loadResult();    
            $sub_object_id = '';
                  
            $sub_object_id = $this->search_sub_object_id($apartment_id);    
            
                $rooms = $reader->getAttribute("rooms");
                $flatfloor = $reader->getAttribute("flatfloor");
                $facing = $reader->getAttribute("decoration");
                $top_size = $reader->getAttribute("height");
                $kv_number = $reader->getAttribute("kvnumber");
                $base_cost = $reader->getAttribute("baseflatcost");
                $full_cost = $reader->getAttribute("flatcostwithdiscounts");
                $cost_each_m = $reader->getAttribute("metrecostwithdiscounts");
                $space = $reader->getAttribute("stotal");
                $kichen_space = $reader->getAttribute("skitchen");
                $section = $reader->getAttribute("section");
            
            if(!$sub_object_id){
                
                 if($object_id){
                
                    $sql4 .= "INSERT INTO `#__sub_objects` (`object_id`,`rooms`,`floor`,`facing`,`space`,`kichen_space`,`section`,`top_size`,`kv_number`,`base_cost`,`full_cost`,`cost_each_m`,`apartment_id`) VALUES ('$object_id','$rooms','$flatfloor','$facing','$space','$kichen_space','$section','$top_size','$kv_number','$base_cost','$full_cost','$cost_each_m','$apartment_id');\r\n";
                    
                     $count_kvart_add++;
                  
                  }else{
                     $count_kvart_not_add++;  
                     $count_kvart_not_add_message .= '<tr><td>Не найден объект с ID </td><td>'.$building_id."</td></tr>";  
                     $count_kvart_not_add_message_report .= "Не найден объект с ID $building_id \r\n";
                  }

                }else{
                    $sql4 .= "UPDATE `#__sub_objects` SET `rooms`='$rooms',`floor`='$flatfloor',`facing`='$facing',`space`='$space',`kichen_space`='$kichen_space',`section`='$section',`top_size`='$top_size',`kv_number`='$kv_number',`base_cost`='$base_cost',`full_cost`='$full_cost',`cost_each_m`='$cost_each_m' WHERE `apartment_id` = '$apartment_id';\r\n";
                
                  $count_kvart_upd++;                    
                }

            $counter++;
            if($counter == $counter2){
            $counter3++;
            
                echo '<p><b>'.$counter2.'</b>'.$sql4.'</p>';//.'<hr>';
            
              //  $this->save_queries($counter3,$counter,$sql4);

                $counter2 = $counter2 + $this->count_queries;
                unset($sql4);
                $sql4 = "";  

                
/*                
        if($counter3<10){
            $id_count='0'.$counter3;
        }
         $file="update_xml/update_queries/".$id_count."_".$counter.".txt";
        if( !file_exists($file)) {
            $fp = fopen($file, "x");
            fwrite($fp, $sql);
            fclose ($fp);
        }                
                
  */        //   echo $sql4;  
                
                
                
          
            }

            }elseif($reader->name == "Apartments" && $reader->nodeType == XMLReader::END_ELEMENT  ) {

             //   $this->save_queries($counter3,$counter,$sql4);
              
                echo $sql4.'<hr>';
                echo 'end';
                unset($sql4);
            }

        }
        
        unset($reader);

    //    echo $sql4;
  
        //  $result = array('oper'=>'parse_sub_objects','type'=>'success','message'=>'save in file sub_objects','files'=>$this->read_queries_files());
      
       //   print json_encode($result);              
    
        
           // конец квартиры
  
    
    }
    
    function getUpdate_ajax()
    {
      
      
      $file = JRequest::getVar('file');
      $oper = JRequest::getVar('oper');
      
      
          if($oper == 'parse_objects'){
            
            $this->parse_objects();
            
          }elseif($oper == 'objects_save_in_db' or $oper == 'sub_objects_save_in_db'){
        //    echo $file;
        //    echo $oper;
        
            $this->read_queries($file,$oper);        
          
          }elseif($oper == 'parse_sub_objects'){
            
            $this->parse_sub_objects();        
          
          }
          
          
          
        //  save_queries
      
      

     }
    
    
    
    

    function getUpdate()
    {
      set_time_limit(0);  
      ini_set('memory_limit', '-1');
?>
 
 <script type="text/javascript">

var files = [];

function find(array, value) {
  for(var i=0; i<array.length; i++) {
    if (array[i] == value) return i;
  }
  return -1;
}
 
function send_oper(file,oper){




                    var fd = new FormData();
                    fd.append('file', file);
                    fd.append('oper', oper);
                    $.ajax({
                      async: false,
                      timeout: 180000,
                      type: 'POST',
                      url: 'index.php?option=com_objects&task=update_xml&format=raw',
                      data: fd,
                      processData: false,
                      contentType: false,
                      dataType: "json",
                      success: function(data) {
//          $result = array('oper'=>'parse_objects','type'=>'success','message'=>'save in file objects','files'=>$this->read_queries_files());
                    
                        
                      if(data.type=='success'){

                      
                      
                          if(data.oper=='parse_objects' && data.files){
                                var get_files = data.files;
                             var re = /\s*,\s*/;
                                var files = get_files.toString().split(re);
                        
                               // alert(files);
                                
                                send_oper(files[0],'objects_save_in_db');
//                                
//                                
//                    
                          }else if(data.oper=='objects_save_in_db'){
//                                  
                                var get_files = data.files;
                             var re = /\s*,\s*/;
                                var files = get_files.toString().split(re);
//                              
                              //  alert(data.files);
      
                                 if(data.files){ //&& type == 'objects'){
                                 //   files.splice(find(files, file),1);
                                    send_oper(files[0],'objects_save_in_db');
                                 }else{
                                    
                                  send_oper('','parse_sub_objects');  
                                    
                                 }
//                            
//                            
                          }else if(data.oper=='parse_sub_objects'){
                            
                                var get_files = data.files;
                             var re = /\s*,\s*/;
                                var files = get_files.toString().split(re);
                                
                                //alert(files);
                                
                                send_oper(files[0],'sub_objects_save_in_db');
                        
                          }else if(data.oper=='sub_objects_save_in_db' && data.files){
                            

                                    var get_files = data.files;
                                    var re = /\s*,\s*/;
                                    var files = get_files.toString().split(re);
                               //     alert(files);


                                 if(typeof files !== 'undefined'){ //&& type == 'objects'){
                                   // files.splice(find(files, file),1);
                                    
                                  //  alert(files);
                                    send_oper(files[0],'sub_objects_save_in_db');
                                 }

                           }
                        
                       }else if (data.type='error'){
                         alert('Ошибка!');
                       }
                      },
                      error: function(data) {
                      }
              
                    });  
    
    
}
 
// function dispatch_operations(oper){
    
   //  if(oper=='parse_objects'){
   //     send_oper('',oper);
  //   }//else if(oper=='objects_save_in_db'){
      //  send_oper('',oper);
    // }
//}




//$(document).ready(function()
//{
    
   //dispatch operations
  //  dispatch_operations('parse_objects');
    
    
//send_oper('','parse_objects');    

//var get_files = '<?php //echo $this->read_queries_files(); ?>';
//var re = /\s*,\s*/;
//var files = get_files.toString().split(re);


//alert(files);

//alert(files[0]);


//send_oper('','parse_sub_objects');    
//send_oper(files[0],'sub_objects_save_in_db');    


  //  alert(111);
    
    
//});





</script>
<?php

            
    //   $oper = JRequest::getVar('oper');
      
      
    //      if($oper == 'parse_sub_objects'){

         //   $this->del_queries_files();
            
            $this->parse_sub_objects();
            
       //   }else{
            
      //      $this->parse_objects();
      //    }  
   //      
      
      
 ?>
 
  <script type="text/javascript">      
      

//     var get_files = '<?php //echo $this->read_queries_files(); ?>';
 //    var re = /\s*,\s*/;
  //   var files = get_files.toString().split(re);
    
  //   send_oper(files[0],'sub_objects_save_in_db');    
 
</script>
<?php        
      
      
      

          
                
                  $message  = "<tr>".$message."</tr>";  
                  $message .= "<tr><td></td><td>&nbsp;</td></tr>";  
                  $message .= "<tr><td>Планировок добавлено</td><td>".$count_kvart_add."</td></tr>";
                  $message .= "<tr><td>Планировок обновлено</td><td>".$count_kvart_upd."</td></tr>";
                  $message .= "<tr><td>Планировок не добавлено</td><td>".$count_kvart_not_add."</td></tr>";
                  $message .= $count_kvart_not_add_message;  
                  
                $message_report .="\r\n";
                $message_report .="Планировок добавлено ".$count_kvart_add."\r\n";
                $message_report .="Планировок обновлено ".$count_kvart_upd."\r\n";
                $message_report .="Планировок не добавлено ".$count_kvart_not_add."\r\n";
                $message_report .=$count_kvart_not_add_message_report;
                
                
              
      
if($count_object_upd > 0 or $count_object_add > 0 or $count_kvart_add > 0 or $count_kvart_upd > 0 ){
  $message  = "
  <p>Загрузка прошла успешно</p>
  <p>Загружено ".$count_object_add." объекта</p>
  <p>Обновлено ".$count_object_upd." объекта</p>
  <p>Список объектов</p>
  <table><tr><th>Операция</th><th>Название объекта</th></tr>".$message."</table>";
              
$message_report = date('h:i:s d.m.Y')."\r\n
Загрузка прошла успешно\r\n
Загружено ".$count_object_add." объекта\r\n
Обновлено ".$count_object_upd." объекта\r\n
Список объектов\r\n
".$message_report."\r\n
-------------------------------\r\n";
          }else{
$message_report = date('h:i:s d.m.Y')."\r\n
Ничего не загружено :(\r\n
-------------------------------\r\n";

$message  = "Ничего не загружено :("; }
      
 //       }else{

//$message_report = date('h:i:s d.m.Y')."\r\n
//Ошибка в файле\r\n
//-------------------------------\r\n";
        
//$message = "Ошибка в файле"; }




echo "<div class='upd_xml'>".$message."</div>";
          

        $file="update_xml/update_reports/".date('d_m_Y').".txt";
        //если файла нету... тогда
        if( !file_exists($file)) {
            $fp = fopen($file, "w"); // ("r" - считывать "w" - создавать "a" - добовлять к тексту), мы создаем файл
            fwrite($fp, $message_report);
        }else{
            $fp = fopen($file, "a+"); // ("r" - считывать "w" - создавать "a" - добовлять к тексту), мы создаем файл
            fwrite($fp, $message_report."\r\n");
        }
        fclose ($fp);          
        
          
  
    }
}
?>

Точка входа function getUpdate()


Не судите строго...
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться