Crmgo Blog

Logovací soubor Asterisku do MySQL

Logovací soubor Asterisku do MySQL

Mám zaznamenávané telefonní hovory ve formátu ogg a jejich informace jsou ukládány do databáze MySQL. Nedávno, kvůli tomu, že jsem přeinstaloval Asterisk a přepsal konfigurační soubor pro připojení k MySQL, na půl měsíce se všechna data ztratila. Naštěstí se data paralelně zálohovala…

Logovací soubor Asterisku do MySQL

Mám zaznamenány telefonní hovory ve formátu ogg a jejich informace jsou ukládány do databáze MySQL. Nedávno, kvůli tomu, že jsem přeinstaloval Asterisk a přepsal konfigurační soubor pro připojení k MySQL, jsem na půl měsíce přišel o všechna data. Naštěstí se data paralelně zapisovala do log souboru, takže jsem z něj pomocí grep extrahoval chybějící data za těch půl měsíce. Napsal jsem PHP skript, který z nich vytvořil MySQL dump.

<?php

$first_qwery="INSERT INTO `cdr` (`calldate`, `linenum`, `clid`, `src`, `dst`, `dcontext`, `channel`, `dstchannel`, `lastapp`, `lastdata`, `duration`, `billsec`, `disposition`, `amaflags`, `accountcode`, `userfield`, `uniqueid`) VALUES ";
$all_stroki=$first_qwery;
read_file("sep_master.txt");
write_file($all_stroki, "ok.sql");

// funkce pro zápis jednoho velkého řádku do dump souboru
function write_file($all_stroki, $file_name){
$h = fopen($file_name,"a"); ;
if(fwrite($h,$all_stroki))
echo "Přidání textu proběhlo úspěšně";
else echo "Při přidávání dat došlo k chybě";
fclose($h);
}

// načteme soubor do pole, předáme každý řádek pole do funkce pro nahrání do MySQL
function read_file($file_name){
$file_array = file($file_name);
foreach ($file_array as $stroka){
$stroka2= str_replace('"','',$stroka);
$stroka3= str_replace("'",'',$stroka2);
//echo $stroka2;
$stroka_to_array=explode(',',$stroka3);
//if ($stroka_to_array[17]="") continue;
//echo $stroka_to_array[17];
addtomysql($stroka_to_array);
//print_r ($stroka_to_array);
}
}

// funkce pro zápis řádku do MySQL
function addtomysql($stroka_array){
//print_r ($stroka_array);# výstup na konci souboru
global $all_stroki;
$i=", ";
$ii="', '";
$count_array=count($stroka_array);
$unik=$stroka_array[$count_array-2];
$next_query="('".$stroka_array[11]."','', '".$stroka_array[4].$ii.$stroka_array[1].$ii.$stroka_array[2]."', '', '"
.$stroka_array[6].$ii.$stroka_array[5].$ii.$stroka_array[7].$ii.$stroka_array[8]."', 777, 777, 'ANSWERED',3 ,'' ,'', '".$unik."'), ";
$all_stroki=$all_stroki.$next_query;
}

//$next_query=$stroka_array[10].", '', ".$stroka_array[4].$i.$stroka_array[1].$i.$stroka_array[2].", '', ".$stroka_array[6].$i.$stroka_array[5].$i.$stroka_array[7].$i.$stroka_array[8].$i.$stroka_array[13].$i.$stroka_array[14].$i.$stroka_array[15].$i.$stroka_array[9].", '', ".", '', ".$stroka_array[17].$i.
?>
A nakonec stačí spustit mysql -p asterisk < ok.sql

Poznámka: příspěvek mohl vzniknout s pomocí AI a lidskou redakcí. Odpovědný: Dmytro Lomaka, Kaltenkirchen.