[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как можно очистить файл
nugle
Как можно очистить файл на сервере, не обновляя скрипта?
Есть счетчик, нужно, чтобы в 3:00 файл counter.txt очищался
пробую так, но если не обновлять, то txt не очистится, что делать?
<?php

function
del($file)
{
$fp = fopen ($file, "a" );
ftruncate ($fp, 0);
fclose ($fp);
}
$file = 'counter.txt';
$flag = true;

if(file_exists($file))
{
if(date('H:i') == '3:00')
del($file);


$arr = file_get_contents($file);
$arr = trim($arr, "&");
$arr = explode("&", $arr);

foreach($arr as $key=>$val)
if($_SERVER['REMOTE_ADDR'] == $val)
{
$flag = false;
break;
}
if($flag == true)
file_put_contents($file, $_SERVER['REMOTE_ADDR'] ."&", FILE_APPEND);


echo date('H:i:s');

}

Либо так, чтобы если юзер зашел,а время уже больше 3:00, то файл обновился и начал вводить заново ipшники до 3:00



Спустя 19 минут, 59 секунд (14.06.2011 - 16:12) waldicom написал(а):
А с помощью cron нельзя сделать?
Что-то типа
echo '' > /path/to/your/file


Спустя 4 минуты, 14 секунд (14.06.2011 - 16:16) nugle написал(а):
waldicom
Как запускать cron?
где можно прочитать про него?

я где то читал, что он только в unix системах работает!

Спустя 58 секунд (14.06.2011 - 16:17) walerus написал(а):
Чета много всего написано...

$file = 'counter.txt';

if(date('H:i') == '3:00')
{
$fd = fopen($file, "w+"); // Создаем файл с нуля
fwrite($fd, $_SERVER['REMOTE_ADDR']);
fclose($fd);
}
else
{
$fd = fopen($file, "a+"); // Дописываем в файл
fwrite($fd, $_SERVER['REMOTE_ADDR']);
fclose($fd);
}

echo date('H:i:s');


Вроде все, если правильно понял задание..

Спустя 1 минута, 54 секунды (14.06.2011 - 16:19) nugle написал(а):
walerus
не совсем верно вы поняли, зачем по 100раз записывать один ip?

Спустя 2 минуты, 36 секунд (14.06.2011 - 16:21) waldicom написал(а):
Цитата (nugle @ 14.06.2011 - 14:16)
Как запускать cron?
где можно прочитать про него?
я где то читал, что он только в unix системах работает!

Нет, в винде есть что-то подобное, называется что-то типа "планировщик задач" (или заданий).
Почитать именно про cron можно тут: http://ru.wikipedia.org/wiki/Cron

Спустя 1 минута, 3 секунды (14.06.2011 - 16:22) walerus написал(а):
Крон немного не так ставится.... Либо использовать wget


*/5 * * * * wget -q http://domen.com/tratata/moy_script.php


либо

*/5 * * * * cd /usr/home/webuser/255.255.255.255/domen.com/tratata/ && /usr/local/bin/php /usr/home/webuser/255.255.255.255/domen.com/tratata/moy_script.php


В любом случае нужно сначала прочесть про крон )))

Спустя 1 минута, 45 секунд (14.06.2011 - 16:24) nugle написал(а):
а без крона никак?
просто пока разберусь, через полчаса нужно отдать скрипт

Спустя 4 минуты, 14 секунд (14.06.2011 - 16:28) walerus написал(а):
Цитата (nugle @ 14.06.2011 - 13:19)
walerus
не совсем верно вы поняли, зачем по 100раз записывать один ip?

Во первых в условии не сказано что должны дописываться уникальные IP адреса.
Во вторых...

$file = 'counter.txt';

if(date('H:i') == '3:00')
{
$fd = fopen($file, "w+"); // Создаем файл с нуля
fwrite($fd, $_SERVER['REMOTE_ADDR']);
fclose($fd);
}
else
{
$file_old = file($file); // Получили массив

if ( !in_array( $_SERVER['REMOTE_ADDR'], $file_old) ) // Если нет такого IP в файл, то дописываем
{
$fd = fopen($file, "a+"); // Дописываем в файл
fwrite($fd, $_SERVER['REMOTE_ADDR']);
fclose($fd);
}
}


echo date('H:i:s');

Спустя 3 минуты, 56 секунд (14.06.2011 - 16:32) T1grOK написал(а):
Бред! Если пользователь зайдет в 3.01 файл не очистится. Тут надо хранить в файле айпишников дату и время и сравнивать с текущей последний из них.

Спустя 2 минуты, 57 секунд (14.06.2011 - 16:35) walerus написал(а):
Цитата (T1grOK @ 14.06.2011 - 13:32)
Бред! Если пользователь зайдет в 3.01 файл не очистится. Тут надо хранить в файле айпишников дату и время и сравнивать с текущей последний из них.

Да, согласен, тогда нужно сделать контроль, обновлялся ли файл в период времени с 3.00 до 3.59

и сменить условие на
if(date('H') == '3')
, но это уже как говорится другая проблема, условие четко говорит о 3 часах ночи ровно..

Спустя 5 минут, 28 секунд (14.06.2011 - 16:41) nugle написал(а):
T1grOK
не совсем понял идею!

Спустя 8 минут, 47 секунд (14.06.2011 - 16:50) nugle написал(а):
Всем спасибо, сделал так
<?php

function
del($file)
{
$fp = fopen ($file, "a" );
ftruncate ($fp, 0);
fclose ($fp);
}
$file = 'counter.txt';
$flag = true;

if(file_exists($file))
{
$time = file_get_contents('time.txt');
if(date('H:i:s') >= '17:49:00' and $time <= '17:49:00')
{
del($file);
del('time.txt');
}
else
{
$arr = file_get_contents($file);
$arr = trim($arr, "&");
$arr = explode("&", $arr);


if(!in_array($_SERVER['REMOTE_ADDR'], $arr))
file_put_contents($file, $_SERVER['REMOTE_ADDR'] ."&", FILE_APPEND);

}
count($arr);
del('time.txt');
file_put_contents('time.txt', date("H:i:s"), FILE_APPEND);

}
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.