сохранения сформировоного текста в php txt файл
Здрасвуйте, написал в php код который выгружаеть информацию с mikrotik api.
<?php
$TODAY = date("Ymd_hi");
$REGION_ID = 12570;
$RECORD_TYPE = 0;
$TRANSLATION_TYPE = 1;
echo 'TRANSLATION_TIME;REGION_ID;RECORD_TYPE;PRIVATE_IPV4;PRIVATE_IP_PORT;PUBLIC_IPV4;PUBLIC_IP_PORT_END;DEST_IPV4;DEST_IP_PORT;TRANSLATION_TYPE;PUBLIC_IP_PORT';
require('routeros_api.class.php');
$API = new RouterosAPI();
$API->debug = false;
if ($API->connect('192.168.200.1', 'admin', '1')) {
$API->write('/ip/firewall/connection/print');
$READ = $API->read(false);
$info = $API->parseResponse($READ);
//print_r($info);
$date = time();
foreach ($info as $row){
$dateunix = $date - $row['timeout']+ 18000;
//$ramtotal =$row['total-memory']/1048576;
echo '<ul>';
echo '<li>';
echo gmdate("Y-m-d H:i:s", $dateunix);
echo ';';
echo $REGION_ID;
echo ';';
echo $RECORD_TYPE;
echo ';';
$abontipport = $row['src-address'];
list($abontip, $abontport) = explode(":", $abontipport);
echo $abontip;
echo ';';
echo $abontport;
echo ';';
$dstipport = $row['reply-dst-address'];
list($dstip, $dstport) = explode(":", $dstipport);
echo $dstip;
echo ';';
echo $dstport;
echo ';';
$replydstipport = $row['dst-address'];
list($replydstip, $replydstport) = explode(":", $replydstipport);
echo $replydstip;
echo ';';
echo $replydstport;
echo ';';
echo $TRANSLATION_TYPE;
echo ';';
echo $replydstport;
echo '</li>';
echo '</ul>';
}
} else {
echo "Ошибка подключения к MikroTik API.\n";
}
echo $TODAY; "<br>";
?>
Результат
TRANSLATION_TIME;REGION_ID;RECORD_TYPE;PRIVATE_IPV4;PRIVATE_IP_PORT;PUBLIC_IPV4;PUBLIC_IP_PORT_END;DEST_IPV4;DEST_IP_PORT;TRANSLATION_TYPE;PUBLIC_IP_PORT
2023-04-14 10:01:08;12570;0;172.16.23.57;46832;109.248.56.253;46832;172.217.13.195;443;1;443
2023-04-14 10:01:27;12570;0;172.16.23.47;32014;109.248.56.253;57939;177.84.149.19;15784;1;15784
2023-04-14 10:01:31;12570;0;37.29.22.70;24584;37.29.22.70;24584;109.248.56.125;1;1;1
2023-04-14 10:01:08;12570;0;172.16.21.24;39556;109.248.56.253;39556;31.13.81.9;443;1;443
2023-04-14 10:01:08;12570;0;172.16.23.28;38168;109.248.56.253;38168;64.233.163.188;5228;1;5228
2023-04-14 10:01:08;12570;0;172.16.24.35;42638;109.248.56.253;42638;216.58.210.138;443;1;443
2023-04-14 10:01:30;12570;0;172.16.23.47;32014;109.248.56.253;32014;88.242.134.14;23382;1;23382
2023-04-14 10:01:30;12570;0;172.16.21.28;40681;109.248.56.253;40681;216.58.210.170;443;1;443
Нужна помош как я могу сохранить резултат в txt файл с названием $TODAY_IPNAT_ $REGION_ID.txt Где $TODAY - текущая время; $REGION_ID - значения с $REGION_ID.
Ответы (2 шт):
Автор решения: teran
→ Ссылка
что-то подобное у вас должно быть
$filename = date("His") . "_IPNAT_{$REGION_ID}.txt";
$csv = fopen($filename, "w+");
foreach ($info as $row){
$dateunix = $date - $row['timeout']+ 18000;
[$dstIP, $dstPort] = explode(':', $row['dst-address']);
$data= [
gmdate("Y-m-d H:i:s", $dateunix),
$REGION_ID,
$RECORD_TYPE,
...explode(":", $row['src-address']),
...explode(":", $row['reply-dst-address']),
$dstIP,
$dstPort,
$TRANSLATION_TYPE,
$dstPort
];
fputcsv($csv, $data);
}
fclose($csv);
Автор решения: Денис Сепетов
→ Ссылка
Вставь примерно такой код вместо своего цикла foreach:
$content = array();
foreach ($info as $row)
{
$dateunix = $date - $row['timeout'] + 18000;
$abontipport = $row['src-address'];
list($abontip, $abontport) = explode(":", $abontipport);
$dstipport = $row['reply-dst-address'];
list($dstip, $dstport) = explode(":", $dstipport);
$replydstipport = $row['dst-address'];
list($replydstip, $replydstport) = explode(":", $replydstipport);
$string = gmdate("Y-m-d H:i:s", $dateunix) . ';'
. $REGION_ID . ';'
. $RECORD_TYPE . ';'
. $abontip . ';'
. $abontport . ';'
. $dstip . ';'
. $dstport . ';'
. $replydstip . ';'
. $replydstport . ';'
. $TRANSLATION_TYPE . ';'
. $replydstport;
$content[] = $string;
}
$fp = fopen(date("Y-m-d-h-i-s") . '_IPNAT_' . $REGION_ID . "txt", 'w+');
fwrite($fp, implode(PHP_EOL, $content));
fclose($fp);