Страница 1 из 2

Приложение Cron

Добавлено: Ср мар 08, 2017 9:19 am
adzam
Почему если в Crone запланировать какое-либо задание то при сохранении вверху экрана пишет ошибку,в принцепе все работает но при каждом сохранении ругается.
Это у меня что-то не так или так должно быть?
Безымянный.png
Безымянный.png (61.34 КБ) 9471 просмотр

Re: Приложение Cron

Добавлено: Ср мар 08, 2017 2:33 pm
xor
Не ругается, а предупреждает
c:\_majordomo\htdocs\lib\mysqli.class.php

Код: Выделить всё

   /**
    * Execute SQL SELECT query and return first record
    *
    * This method returns record assosiated array (by field names)
    *
    * @param string $query SQL SELECT query
    * @return array|void execution result
    * @access public
    */
   public function SelectOne($query)
   {
      if ($result = $this->Exec($query))
      {
         $rec = mysqli_fetch_array($result, MYSQL_ASSOC); //<----------------
         
         return $rec;
      }
      else
      {
         $this->Error($query);
      }
   } 
Может, подправить надо после перехода на mysqli?
http://www.php.su/mysqli_fetch_array

Код: Выделить всё

/* associative array */
$row = mysqli_fetch_array($result, MYSQLI_ASSOC);  //<-----------------------------
printf ("%s (%s)\n", $row["Name"], $row["CountryCode"]); 
Попробуйте поменять MYSQL_ASSOC на MYSQLI_ASSOC, перегрузитесь, если варнинг уйдет, Сергею напишите.

Re: Приложение Cron

Добавлено: Ср мар 08, 2017 9:44 pm
xor
нет, там, вроде, это учтено
в c:\_majordomo\htdocs\lib\mysqli.class.php

Код: Выделить всё

if (!defined('MYSQL_BOTH')) {
 define('MYSQL_BOTH',MYSQLI_BOTH);
 define('MYSQL_NUM',MYSQLI_NUM);
 define('MYSQL_ASSOC',MYSQLI_ASSOC);
}

Re: Приложение Cron

Добавлено: Чт мар 09, 2017 11:44 am
Ged
Постою, послушаю.

Re: Приложение Cron

Добавлено: Чт мар 09, 2017 9:52 pm
adzam
А у меня в папке C:\_majordomo\htdocs\lib есть оба файла mysql.class.php и mysqli.class.php.
может должен быть только один?
1.jpg
1.jpg (74.98 КБ) 9318 просмотров

Re: Приложение Cron

Добавлено: Чт мар 09, 2017 10:06 pm
adzam
xor писал(а): Попробуйте поменять MYSQL_ASSOC на MYSQLI_ASSOC, перегрузитесь, если варнинг уйдет, Сергею напишите.
Попробовал поменял, но предупреждение по прежнему выходит

Re: Приложение Cron

Добавлено: Пт мар 10, 2017 1:50 am
xor
Результаты разбора:
Что сделал:
в файле mysqli.class.php наставил отладок вокруг 211 строки:

Код: Выделить всё

   public function SelectOne($query)
   {  echo $query."<br>"; ////////////////////////////////////////////////////////////////////////
      if ($result = $this->Exec($query))
      {
         $rec = mysqli_fetch_array($result, MYSQL_ASSOC);
         print_r($rec);     ///////////////////////////////////////////////////////////////////////////
     echo "<br>";     ///////////////////////////////////////////////////////////////////////////
         return $rec;
      }
      else
      {
         $this->Error($query);
      }
   } 
получил вот:
(квадратные скобки вокруг CODE заменил на {}, а то коряво форматируется сдесь)

Код: Выделить всё

SELECT * FROM methods WHERE ID='105'
Array ( [ID] => 105 [OBJECT_ID] => 0 [CLASS_ID] => 35 [TITLE] => Update [DESCRIPTION] => Обновление задачи {code} => $name='Cron_'.$this->object_title; SQLSelectOne("DELETE FROM jobs WHERE title='".$name."'"); [CALL_PARENT] => 0 [SCRIPT_ID] => 0 [EXECUTED] => 2017-03-10 01:16:22 [EXECUTED_PARAMS] => a:5:{s:8:"PROPERTY";s:6:"Enable";s:9:"NEW_VALUE";s:1:"0";s:9:"OLD_VALUE";s:1:"0";s:6:"SOURCE";s:0:"";s:21:"ORIGINAL_OBJECT_TITLE";s:12:"Собаки";} ) 
DELETE FROM jobs WHERE title='Cron_Собаки'

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in C:\_majordomo\htdocs\lib\mysqli.class.php on line 211
Видим, что варнинг выскакивает после безобидного DELETE FROM jobs WHERE title='Cron_Собаки'
Но, выше видно, что это вызывается кодом

Код: Выделить всё

 SQLSelectOne("DELETE FROM jobs WHERE title='".$name."'") 
что подразумевает возврат одной записи.
Полез в базу, выполнил запрос SELECT * FROM methods WHERE ID='105'
и поменял в поле CODE SQLSelectOne на SQLExec("DELETE FROM jobs WHERE title=''".$name."''")

Варнинг убрался, но, естественно, только для этой задачи.
Надо, наверное, автору Крона сообщить

Re: Приложение Cron

Добавлено: Пт мар 10, 2017 9:43 am
Eraser
в модуле исправил

Re: Приложение Cron

Добавлено: Сб мар 11, 2017 9:10 am
adzam
Обновился но ничего не поменялось.
Warning все равно появляются.

Re: Приложение Cron

Добавлено: Сб мар 11, 2017 11:37 am
Eraser
adzam писал(а):Обновился но ничего не поменялось.
Warning все равно появляются.
есть 2 варианта
-переустановить модуль
-исправить в объекте "Cron" метод "Update" = заменить SQLSelectOne на SQLExec