За последние 24 часа нас посетили 55305 программистов и 1712 роботов. Сейчас ищут 2392 программиста ...

Скрипт запускается 2 раза или причина в другом?

Тема в разделе "Прочие вопросы по PHP", создана пользователем Crystallon, 7 фев 2010.

  1. Crystallon

    Crystallon Активный пользователь

    С нами с:
    7 фев 2010
    Сообщения:
    61
    Симпатии:
    0
    Скрипт запускается 1 раз но в MySQL базу информация записывается 2 раза(2 одинаковых строчки выходит), скинуть скрипт немогу т.к. незнаю что именно скидывать(скрипт состоит из нескольких десятков файлов которые идут как модуль к CMS Data Life Engine), просто подскажите в какую сторону копать.
    Заранее спасибо.
     
  2. Crystallon

    Crystallon Активный пользователь

    С нами с:
    7 фев 2010
    Сообщения:
    61
    Симпатии:
    0
    Вот файл который поидее отвечает за все MySQL запросы в модуле, но я не знаю в нем ошибка или нет:
    Код (Text):
    1.  
    2. <?
    3. if(!defined('DATALIFEENGINE')) {
    4.     die("Hacking attempt!");
    5. }
    6.  
    7. $query_List = array();
    8.  
    9. /*
    10.  * Класс обработки запросов
    11.  */
    12.  
    13. class l2jQuery {
    14.    
    15.     private $mainQuery = "main"; // константа, основная сборка
    16.    
    17.     private $queryList = array(); // база запросов
    18.    
    19.     private $query = ""; // запрос
    20.     private $paramList = array(); // список запросов
    21.    
    22.     /*
    23.      * Конструктор
    24.      * Подключает файлы запросов
    25.      */
    26.    
    27.     function l2jQuery() {
    28.         if ($handle = opendir(ENGINE_DIR.'/lineage/include/l2jquery')) {
    29.             while (false !== ($file = readdir($handle))) {
    30.                 if (ereg("[a-z0-9\_\-]*[\.][x].[p][h][p]", $file))
    31.                     include_once ENGINE_DIR."/lineage/include/l2jquery/{$file}";
    32.             }          
    33.             if (! (isset($query_List) && count($query_List) > 0))
    34.                 die ("Can not load query lists");
    35.                
    36.             $this->queryList = $query_List;
    37.         } else {           
    38.             $this->queryList = array();
    39.         }      
    40.         //include_once ENGINE_DIR.'/lineage/include/l2jquery/main.php';    
    41.     }
    42.    
    43.     /*
    44.      * Получение списка версий
    45.      */
    46.    
    47.     function getVersions() {
    48.         $result = array();
    49.        
    50.         foreach ( $this->queryList AS $key => $value ) {
    51.             $result[$key] = $value["name"];
    52.         }
    53.        
    54.         return $result;
    55.     }
    56.    
    57.     /*
    58.      * Добавление параметра
    59.      */
    60.    
    61.     function setParam($key, $value) {
    62.         $this->paramList[$key] = $value;
    63.     }
    64.    
    65.     /*
    66.      * Получение запроса
    67.      */
    68.    
    69.     function getQuery($version="", $function="", $params="") {
    70.  
    71.         $this->query = "";
    72.        
    73.         if (empty($this->queryList[$version]["query"][$function])) {
    74.             $this->query = $this->queryList[$this->mainQuery]["query"][$function];
    75.         } else {
    76.             $this->query = $this->queryList[$version]["query"][$function];
    77.         }
    78.        
    79.         if (is_array($params) && count($params) > 0) {
    80.             $this->paramList = array_merge($this->paramList, $params);
    81.         }
    82.        
    83.         if (is_array($this->query)) {
    84.             foreach ($this->query AS $key => $value) {
    85.                 $this->query[$key] = $this->queryParser($version, $value);
    86.             }
    87.         } else {
    88.             $this->query = $this->queryParser($version, $this->query);
    89.         }  
    90.        
    91.         $this->paramList = array();
    92.                
    93.         return $this->query;
    94.    
    95.     }
    96.    
    97.     /*
    98.      * Парсер запросов
    99.      */
    100.    
    101.     private function queryParser($version="", $query="") {
    102.         //$query = QueryIFSET($query, $params);
    103.        
    104.         // Перевод строки = пробел
    105.         $query = str_replace("\n", " ", $query);
    106.  
    107.         // Замена параметров       
    108.         foreach ($this->paramList AS $key => $value) {
    109.             $query = str_replace('{'.$key.'}', $value, $query);
    110.         }
    111.        
    112.         // Обработка полей
    113.         preg_match_all("/\{field=(.*?)\}/i", $query, $matches);
    114.  
    115.         for($i = 0; $i < count($matches[0]); $i++) {
    116.             $pattern = $matches[0][$i];
    117.             $table = $matches[1][$i];
    118.             $fieldArray = array();
    119.            
    120.             if (isset($this->queryList[$version]["fields"][$table])) {
    121.                 $fieldArray = $this->queryList[$version]["fields"][$table];
    122.             } else {
    123.                 $fieldArray = $this->queryList[$this->mainQuery]["fields"][$table];
    124.             }
    125.            
    126.             foreach ($fieldArray AS $key => $value) {
    127.                 $fieldArray[$key] = "`{$table}`.{$value} AS `{$key}`";
    128.             }
    129.        
    130.             $query = str_replace($pattern, implode(", ", $fieldArray), $query);
    131.         }
    132.        
    133.         // Удаление всех не обработанных тегов
    134.         preg_match_all("/\{(.*?)\}/i", $query, $matches);
    135.         for($i = 0; $i < count($matches[0]); $i++) {
    136.             $pattern = $matches[0][$i];
    137.             $query = str_replace($pattern, "", $query);
    138.             //echo $pattern." ";
    139.         }
    140.        
    141.         // Возвращение результата
    142.         return $query;
    143.     }
    144.    
    145.     /*
    146.      * Тип предмета
    147.      */
    148.    
    149.     function getItemType($version, $id) {      
    150.         if (isset($this->queryList[$version]["itemType"])) {
    151.            
    152.             if (isset($this->queryList[$version]["itemType"][$id])) {  
    153.                 return $this->queryList[$version]["itemType"][$id];
    154.             }
    155.            
    156.         } elseif (isset($this->queryList[$this->mainQuery]["itemType"])) {
    157.            
    158.             if (isset($this->queryList[$this->mainQuery]["itemType"][$id])) {
    159.                 return $this->queryList[$this->mainQuery]["itemType"][$id];            
    160.             }
    161.            
    162.         }      
    163.         return "hidden";       
    164.     }
    165.    
    166. }
    167. ?>
     
  3. engager

    engager Активный пользователь

    С нами с:
    21 янв 2009
    Сообщения:
    1.106
    Симпатии:
    1
    Для начала я бы посмотрел по логу веб-сервера, может http-запрос приходит дважды. Стлакивался с таким однажды - кривая прокся зачем-то дублировала запросы.