# Jahak (03.10.2015 / 21:01)Я тебя понял. И повторяю - мой скрипт на запись работает с последним файлом, каким бы по счёту он небыл: 1-м, или 2-м ... или 9-м, или 10-м. Кстати, можно же изменить количество создаваемых файлов с десяти на (к примеру) 18-ть, и в этом случае скрипт так же будет работать с восемнадцатым файлом(если он создан) как с последним. Привожу листинг кода, но без вывода результата, так как вывод я переписываю.
ДоХтор, Ты не понял меня, я хочу узнать как он у тебя работает именно с 10-ым файлом. У тебя в него поступают данные 5 минут? или как? Можешь выложить свой скрипт в архиве, я посмотрю как он у тебя р
исходный код логера (+/-)
<?php
if (isset($_REQUEST[session_name()])) session_start();
$us_sid = session_id();
$textfile = time() . '.txt';
$time_is_up = time() - 300;
$numb_files = 10;
$date = date('j.m.Y - H:i:s');
$user_agent = trim(htmlspecialchars($_SERVER['HTTP_USER_AGENT']));
$user_agent = str_replace('|', '', $user_agent);
$ip = $_SERVER['REMOTE_ADDR'];
$ref = filter_input(INPUT_SERVER, 'HTTP_REFERER');
$ref = !empty($ref) ? '<a href="'. $ref .'">'. $ref .'</a>' : null;
$filing = $us_sid .'|'. $date .'|'. $user_agent .'|'. $ip .'|'. $ref . PHP_EOL;
if (sizeof(glob('*.txt')) == 0) {
file_put_contents($textfile, $filing);
}
$array_names = glob('*.txt');
$all_strings = sizeof($array_names);
if ($all_strings > 0 && $all_strings < $numb_files) {
$basename = (int)basename($array_names[($all_strings - 1)], '.txt');
if ($time_is_up > $basename) file_put_contents($textfile, $filing);
$array_names = glob('*.txt');
$end_file = file_get_contents(end($array_names));
$explode = explode(PHP_EOL, $end_file);
$temp = array();
foreach ($explode as $string) {
$array = explode('|', $string);
$temp[] = $array[0];
}
if (!in_array($us_sid, $temp)) {
file_put_contents(end($array_names), $filing, FILE_APPEND | LOCK_EX);
}
}
if (sizeof(glob('*.txt')) >= $numb_files) {
$array_names = array_reverse(glob('*.txt'));
$arr_fnames = array();
$arr_contents = array();
for ($i = 0; $i < $numb_files; $i++) {
$arr_fnames[] = $array_names[$i];
$arr_contents[] = file_get_contents($array_names[$i]);
}
foreach (glob('*.txt') as $filename) unlink($filename);
$basename = (int)basename($arr_fnames[0], '.txt');
if ($time_is_up > $basename) {
file_put_contents($textfile, $filing);
for ($i = 0; $i < ($numb_files - 1); $i++) {
file_put_contents($arr_fnames[$i], $arr_contents[$i]);
}
} else {
for ($i = 0; $i < $numb_files; $i++) {
file_put_contents($arr_fnames[$i], $arr_contents[$i]);
}
}
$array_names = glob('*.txt');
$file = file_get_contents(end($array_names));
$explode = explode(PHP_EOL, $file);
$temp = array();
foreach ($explode as $string) {
$array = explode('|', $string);
$temp[] = $array[0];
}
if (!in_array($us_sid, $temp)) {
file_put_contents(end($array_names), $filing, FILE_APPEND | LOCK_EX);
}
}