Перейти к содержимому


CRON

cron

Сообщений в теме: 7

#1 TelecomMedia

    Активный участник

  • Пользователи
  • PipPipPip
  • 378 сообщений

Отправлено 09 Июль 2018 - 12:42

Добрый день.
Настраиваем вычисление в кроне.
Все , вроде,по инстркукции, но почему-то не работает.
Отдельно, вне цикла, как доп. действие, код работает.

$result = data_select(380, "status=0"); // цикл по всем активным записям таблицы Наши сотрудники
while ($line = sql_fetch_assoc($result)) // помещаем в $line текущую запись на очередном проходе цикла
{

$snoopy
= new Snoopy;
$snoopy
->proxy_host = $config['proxy_host'];
$snoopy
->proxy_port = $config['proxy_port'];
$snoopy
->proxy_user = $config['proxy_user'];
$snoopy
->proxy_pass = $config['proxy_pass'];
$url
="https://smsc.ru/sys/senders.php?get=1&login=sms34&psw=bvn773ked&fmt=3&operators=1";
$snoopy
->fetch($url);
$var
= $snoopy->results;
$var2
= json_decode($var,true);

$senderName
= $line['f7200'];
   
   
foreach($var2 as $item){
           
if($item['sender'] == $line['f7200']){
                    $mega
= $item['mega'];
                    $mts
= $item['mts'];
                    $tele
= $item['tele2'];
                   
switch($mega){
                           
case '0':
                           
case '1':
                                    $mega
= 'Подано';
                                   
break;
                           
case '2':
                                    $mega
= 'Допущено';
                                   
break;
                           
case '3':
                                    $mega
= 'Отклонено';
                                   
break;
                           
case '4':
                           
case '5':
                                    $mega
= 'Отключено';
                                   
break;
                           
case '6':
                                    $mega
= 'Дубль';
                                   
break;
                           
case '8':
                                    $mega
= 'Треб. документы';
                                   
break;
                           
default:
                                    $mega  
= 'Не подано';
                                   
break;
                   
}
                   
                   
switch($mts){
                           
case '0':
                           
case '1':
                                    $mts
= 'Подано';
                                   
break;
                           
case '2':
                                    $mts
= 'Допущено';
                                   
break;
                           
case '3':
                                    $mts
= 'Отклонено';
                                   
break;
                           
case '4':
                           
case '5':
                                    $mts
= 'Отключено';
                                   
break;
                           
case '6':
                                    $mts
= 'Дубль';
                                   
break;
                           
case '8':
                                    $mts
= 'Треб. документы';
                                   
break;
                           
default:
                                    $mts
= 'Не подано';
                                   
break;
                   
}
                   
                   
                   
switch($tele){
                           
case '0':
                           
case '1':
                                    $tele
= 'Подано';
                                   
break;
                           
case '2':
                                    $tele
= 'Допущено';
                                   
break;
                           
case '3':
                                    $tele
= 'Отклонено';
                                   
break;
                           
case '4':
                           
case '5':
                                    $tele
= 'Отключено';
                                   
break;
                           
case '6':
                                    $tele
= 'Дубль';
                                   
break;
                           
case '8':
                                    $tele
= 'Треб. документы';
                                   
break;
                           
default:
                                    $tele
= 'Не подано';
                                   
break;
                   
}
                 
                    $line
['f7220'] = $mega;
                    $line
['f7240'] = $mts;
                    $line
['f14211'] = $tele;
                    $line
['f14201'] = json_encode($item).PHP_EOL.PHP_EOL.'Значения статусов: '.PHP_EOL.' 0 - ожидает регистрации '.PHP_EOL.' 1 - отправлено на регистрацию'.PHP_EOL.' 2 - допущено оператором '.PHP_EOL.' 3 - не принято оператором '.PHP_EOL.' 4 - временно отключено '.PHP_EOL.' 5 - автоотключение из-за окончания баланса '.PHP_EOL.' 6 - дубль другого имени (конфликт) '.PHP_EOL.' 8 - необходимы подтверждающие документы';
           
}
                           
   
}

data_update
(380, $line, "id=",$line['id']); // обновляем текущую строку запросом, если поля в $line менялись!
}


#2 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 09 Июль 2018 - 15:58

А что конкретно то не работает? На первый взгляд код выглядит корректно.

#3 TelecomMedia

    Активный участник

  • Пользователи
  • PipPipPip
  • 378 сообщений

Отправлено 09 Июль 2018 - 16:00

Просмотр сообщенияCbCoder (09 Июль 2018 - 15:58) писал:

А что конкретно то не работает? На первый взгляд код выглядит корректно.
Не происходит обновление полей. Единственное, что приходит на ум, это то , что мы делаем запрос на сторонний ресурс и мб это из -за того, что много записей и на каждую он тратит время.

А можно как то отследить ,когда заканчивается проход по всем записям?

#4 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 10 Июль 2018 - 13:53

Просмотр сообщенияTelecomMedia (09 Июль 2018 - 16:00) писал:

А можно как то отследить ,когда заканчивается проход по всем записям?

Добавьте echo в конце и смотрите лог задания. Вообще, и без эхо там выведется ошибка вылета по таймауту, если не успевает отработать.

Можно также добавить LIMIT в запрос и проверить вначале на малом числе записей.

#5 TelecomMedia

    Активный участник

  • Пользователи
  • PipPipPip
  • 378 сообщений

Отправлено 19 Июль 2018 - 11:57

Скрипт почему-то не обновляет строку после изменения $line.
$result = data_select(380, "status=0"); // цикл по всем активным записям таблицы Наши сотрудники
$snoopyFree
= new Snoopy;
$snoopyFree
->proxy_host = $config['proxy_host'];
$snoopyFree
->proxy_port = $config['proxy_port'];
$snoopyFree
->proxy_user = $config['proxy_user'];
$snoopyFree
->proxy_pass = $config['proxy_pass'];

/*
$snoopy = new Snoopy;
$snoopy->proxy_host = $config['proxy_host'];
$snoopy->proxy_port = $config['proxy_port'];
$snoopy->proxy_user = $config['proxy_user'];
$snoopy->proxy_pass = $config['proxy_pass'];
*/

//Мультиподпись (бесплатные имена)
$url
="https://smsc.ru/sys/senders.php?get=1&login=sms34&psw=bvn773ked&fmt=3&operators=1";
$url2
="https://smsc.ru/sys/senders.php?get=1&login=sms34_sub&psw=dhk736&fmt=3&operators=1";
$snoopyFree
->fetch($url);
$var
= $snoopyFree ->results;
$var
= json_decode($var,true);
/*
$snoopy->fetch($url2);
$varR = $snoopy->results;
$varR = json_decode($varR,true);
*/

while ($line = sql_fetch_assoc($result)) // помещаем в $line текущую запись на очередном проходе цикла
{
if(intval($line['id']) > 5514){
$senderName
= $line['f7200'];
   
   
foreach($var as $item){
           
if($item['sender'] == $line['f7200']){
           
       
                    $mega
= $item['mega'];
                    $mts
= $item['mts'];
                    $tele
= $item['tele2'];
                            echo
'End OF CRON '.$mega.$mts.$tele."<br>";
                           
                   
switch($mega){
                           
case '0':
                           
case '1':
                                    $mega
= 'Подано';
                                   
break;
                           
case '2':
                                    $mega
= 'Допущено';
                                   
break;
                           
case '3':
                                    $mega
= 'Отклонено';
                                   
break;
                           
case '4':
                           
case '5':
                                    $mega
= 'Отключено';
                                   
break;
                           
case '6':
                                    $mega
= 'Дубль';
                                   
break;
                           
case '8':
                                    $mega
= 'Треб. документы';
                                   
break;
                           
default:
                                    $mega  
= 'Не подано';
                                   
break;
                   
}
                   
                   
switch($mts){
                           
case '0':
                           
case '1':
                                    $mts
= 'Подано';
                                   
break;
                           
case '2':
                                    $mts
= 'Допущено';
                                   
break;
                           
case '3':
                                    $mts
= 'Отклонено';
                                   
break;
                           
case '4':
                           
case '5':
                                    $mts
= 'Отключено';
                                   
break;
                           
case '6':
                                    $mts
= 'Дубль';
                                   
break;
                           
case '8':
                                    $mts
= 'Треб. документы';
                                   
break;
                           
default:
                                    $mts
= 'Не подано';
                                   
break;
                   
}
                   
                   
                   
switch($tele){
                           
case '0':
                           
case '1':
                                    $tele
= 'Подано';
                                   
break;
                           
case '2':
                                    $tele
= 'Допущено';
                                   
break;
                           
case '3':
                                    $tele
= 'Отклонено';
                                   
break;
                           
case '4':
                           
case '5':
                                    $tele
= 'Отключено';
                                   
break;
                           
case '6':
                                    $tele
= 'Дубль';
                                   
break;
                           
case '8':
                                    $tele
= 'Треб. документы';
                                   
break;
                           
default:
                                    $tele
= 'Не подано';
                                   
break;
                   
}
                   
           
                    $line
['f7220'] = $mega;
                    $line
['f7240'] = $mts;
                    $line
['f14211'] = $tele;
                    echo $line
['f7220'].PHP_EOL.$line['f7240'].PHP_EOL.$line['f14211']; <- ВОТ ТУТ ДАННЫЕ ПОЛУЧАЮТСЯ КОРРЕКТНЫЕ А НА ВЫХОДЕ ПУТСЫЕ ПОЛЯ
                   
// $line['f14201'] = json_encode($item).PHP_EOL.PHP_EOL.'Значения статусов: '.PHP_EOL.' 0 - ожидает регистрации '.PHP_EOL.' 1 - отправлено на регистрацию'.PHP_EOL.' 2 - допущено оператором '.PHP_EOL.' 3 - не принято оператором '.PHP_EOL.' 4 - временно отключено '.PHP_EOL.' 5 - автоотключение из-за окончания баланса '.PHP_EOL.' 6 - дубль другого имени (конфликт) '.PHP_EOL.' 8 - необходимы подтверждающие документы'.PHP_EOL;
           
}
         
           
}

         

 
/*
    foreach($varR as $item){
            if($item['sender'] == $line['f7200']){
                    $line['f14201'] = json_encode($item);
                    $mega2 = $item['mega_step'];
                    $beeline2 = $item['bee_step'];
                    $tele2 = $item['tele2_step'];
                    switch($mega2){
                            case '0':
                            case '1':
                                    $mega2 = 'Подано';
                                    break;
                            case '2':
                                    $mega2 = 'Допущено';
                                    break;
                            case '3':
                                    $mega2 = 'Отклонено';
                                    break;
                            case '4':
                            case '5':
                                    $mega2 = 'Отключено';
                                    break;
                            case '6':
                                    $mega2 = 'Дубль';
                                    break;
                            case '8':
                                    $mega2 = 'Треб. документы';
                                    break;
                            default:
                                    $mega2= 'Не подано';
                                    break;
                    }
                   
                    switch($beeline2){
                            case '0':
                            case '1':
                                    $beeline2= 'Подано';
                                    break;
                            case '2':
                                    $beeline2= 'Допущено';
                                    break;
                            case '3':
                                    $beeline2= 'Отклонено';
                                    break;
                            case '4':
                            case '5':
                                    $beeline2= 'Отключено';
                                    break;
                            case '6':
                                    $beeline2= 'Дубль';
                                    break;
                            case '8':
                                    $beeline2= 'Треб. документы';
                                    break;
                            default:
                                    $beeline2= 'Не подано';
                                    break;
                    }
                   
                   
                    switch($tele2){
                            case '0':
                            case '1':
                                    $tele2 = 'Подано';
                                    break;
                            case '2':
                                    $tele2 = 'Допущено';
                                    break;
                            case '3':
                                    $tele2 = 'Отклонено';
                                    break;
                            case '4':
                            case '5':
                                    $tele2 = 'Отключено';
                                    break;
                            case '6':
                                    $tele2 = 'Дубль';
                                    break;
                            case '8':
                                    $tele2 = 'Треб. документы';
                                    break;
                            default:
                                    $tele2 = 'Не подано';
                                    break;
                    }
                 
                    $line['f14901'] = $mega2;
                    $line['f14911'] = $beeline2;
                    $line['f14921'] = $tele2;
                   
                 
         }      
    }
*/


}
data_update
(380, $line, "id=",$line['id']); // обновляем текущую строку запросом, если поля в $line менялись!
}


#6 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 19 Июль 2018 - 12:21

У вас в коде есть некий цикл foreach($var as $item), который несколько раз (столько, сколько элементов в $var) перезаписывает $line. Возможно в последнем проходе цикла он в итоге записывает пустые значения, хотя до этого могли быть и корректные (и echo их вывело). Может алгоритм некорректен? Как то странно выглядит многократная перезапись $line в цикле.

#7 TelecomMedia

    Активный участник

  • Пользователи
  • PipPipPip
  • 378 сообщений

Отправлено 19 Июль 2018 - 12:23

Просмотр сообщенияCbCoder (19 Июль 2018 - 12:21) писал:

У вас в коде есть некий цикл foreach($var as $item), который несколько раз (столько, сколько элементов в $var) перезаписывает $line. Возможно в последнем проходе цикла он в итоге записывает пустые значения, хотя до этого могли быть и корректные (и echo их вывело). Может алгоритм некорректен? Как то странно выглядит многократная перезапись $line в цикле.

Цикл прогоняет все записи полученные по API со стороннего сервиса.
Там по идеи всего 1 раз записываются LINE, т.к. идет сравнение значения в ЦРМ с полученным по АПИ и только в случае соответствия значения перезаписываются.
Такое соответствие всего 1 может быть.

#8 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 19 Июль 2018 - 12:27

Тогда я в ступоре честно говоря. Не соображаю в чем еще может быть дело. Попробуйте все таки вывод echo сделать не из цикла, а непосредственно перед запросом.





Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных