Вот сам скрипт:
<?php /* Переменные для соединения с базой данных */ $hostname = "localhost"; $username = "dbuser"; $password = "dbpass"; $dbName = "dbname"; /* Таблица MySQL, в которой хранятся данные */ $cdrtable = "cdr"; /* Переменные для определения вчерашней даты */ $time = mktime(date('H'), date('i'), date('s'), date('m'), date('d')-1, date('Y')); $ydate = date("d.m.Y", $time); /* создать соединение */ mysql_connect($hostname,$username,$password) OR DIE("Не могу создать соединение "); /* выбрать базу данных. Если произойдет ошибка - вывести ее */ mysql_select_db($dbName) or die(mysql_error()); /* запрос данных . номерация у нас трехзначная, поэтому LENGTH( `src` ) >3, отсекаем исходящие вызовы */ $query = "SELECT `dst` , `src` , `duration` , `dstchannel` , `calldate` FROM `cdr` WHERE DATE_SUB( CURDATE( ) , INTERVAL 1 DAY ) <= `calldate` AND CURDATE( ) > `calldate` AND `disposition` = 'NO ANSWER' AND LENGTH( `src` ) >3"; /* Выполнить запрос. Если произойдет ошибка - вывести ее. */ $res=mysql_query($query) or die(mysql_error()); /* Как много нашлось строк */ $number = mysql_num_rows($res); /* заголовок письма */ $mes="Отчет о пропущенных вызовах за $ydate.\r\n\r\n"; /* готовим текст письма*/ if ($number == 0) { $mes .= "Пропущенных вызовов не было"; } else { /* Получать по одной строке из таблицы в массив $row, пока строки не кончатся */ while ($row=mysql_fetch_array($res)) { $mes .= " ".$row['calldate'].". От ".$row['src']; $mes .= " Абонент ".mb_substr($row['dstchannel'],4,3); $mes .= ". Ожидание ".$row['duration']." сек.\r\n"; } } /* Отправляем письмо */ mail('admin@mail.domain', $ydate.' report', $mes); ?>
Постарался комментировать достаточно подробно, если что не будет работать, спрашивайте.
Пример письма:
Отчет о пропущенных вызовах за 29.10.2012.
2012-10-29 11:46:38. От 4959819231 Абонент 109. Ожидание 45 сек.
2012-10-29 13:18:45. От 4956103380 Абонент 104. Ожидание 47 сек.
2012-10-29 14:33:13. От 4959819331 Абонент 104. Ожидание 53 сек.
2012-10-29 16:58:40. От 9030293453 Абонент 101. Ожидание 12 сек.

