@pavelBer
начинаю путь в IT

Не могу понять почему система отправляет 2-5 писем вместо одного?

Добрый день.
У меня есть оповещение о новых заказа в CRM, запуск по cron, но вместо того, что бы отправить одно письмо скрипт отправляет 2-5 писем с интервалом в минуту (интервал cron). Что заставляет cron Останавливаться на 5м письме?
Проверял файлы notify-$site - последние номера заказов исправно записываются сразу.

$sites = array_keys($sitesinfo);

function tr($msg) {
  return iconv('CP1251', 'UTF-8', $msg);
}

foreach ($sites   as $site) {
  $zakaz = @file_get_contents(dirname(__FILE__)."/notify-$site");
  if (empty($zakaz)) {
    $sql = "SELECT MAX(zakaz) AS zakaz FROM zakaz";
    $res = q($sql);
    $row = a($res);
    $zakaz=$row['zakaz'];
    if (!file_put_contents(dirname(__FILE__)."/notify-$site", $zakaz)) {
      echo "Error. Please chmod 0777 script_dir";
      exit();
    } else {
      echo " Initialized. Nofitications from zakaz num ".$zakaz;
    }
  }
  
  
	try {		
			$dateStart 	= $d_datastart;
			$dateEnd 	= $d_dateend;

			
			$main = new OrdersByApiCheck($dateStart, $dateEnd, $site, $sources_id);
			$main->getInfo();  //get info from DB and calltouch
			$main->getGaInfo(); //get info from GA

			//PROCESSING
			$main->ordersNotInCalltouch(); /* разделяем заказы с инфо каллточ и га */
			$main->processFeedGenAndNameSrch();
			$main->generateXmlFeed();
      
      $done = array();
      foreach ($main->orders as $orderDB) {
        $order_id = $orderDB['zakaz'];
        if (in_array($order_id, $done )){
          continue;
        }
        $done[] = $order_id;
        file_put_contents(dirname(__FILE__)."/notify-$site", max($done));
        $labels = empty($main->labels[$order_id]) ? '' :str_replace("\n", "<br>\n", $main->labels[$order_id]);
        
        $subject = "Новый заказ оформлен $order_id $site";
        
        $msg = "<html><body>";
        
        if (empty($labels)) {
          $msg .= 'Нет меток<br>';
          if (!$WITHOUT_LABEL) continue;
        } else {
          $msg .= $labels."<br>";
        }
        $msg .= "Телефон 1: <b>".tr($orderDB['phone1'])."</b><br>";
        $msg .= "Телефон 2: <b>".tr($orderDB['phone2'])."</b><br><br>";
        $msg .= '<table border="1"><tr><td></td><td>кол-во</td><td>сумма</td></tr>';
        
        $total_price = 0;
        
        foreach ($main->orders as $order) {
          if ($order["zakaz"] == $order_id) {
            $msg .= "<tr><td>";
            $msg .= tr($order["model_name"]);
            $amount = (int)$order['price'] * (int)$order['quantity'];
            $total_price +=  $amount;
            $msg .= '</td><td align="center">'.(int)$order['quantity'].'</td><td align="center">'.$amount."</td>";
            $msg .= "</tr>";
          }
        }
        $msg .= '<tr><td><b>Итого:</b></td><td colspan="2" align="center">'.$total_price."</td></tr>";
        $msg .= "</table>";
        $msg .= "</body></html>";
        
        foreach($MAILS as $mailto) {
          send_html_mail('noreply@mail.ru', 'noreply@mail.ru', $mailto, $mailto, 'utf-8', 'utf-8', $subject, $msg);
        }
        
      }
			unset($main);
			$main=NULL;

	} catch (Exception $e) {
		
		//echo "ERROR WHILE RINNING. logs." . $e->getMessage();
	}
}
  • Вопрос задан
  • 95 просмотров
Пригласить эксперта
Ответы на вопрос 1
scottparker
@scottparker
потому что отправка в цикле? или мне показалось
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы