|
|
|
| Подскажите, плз, как написать скрипт, который через определенное время добавлял 1 %???
Короче каждые 24 часа добавляется один процент(открывается файл и в него пишется(это я сделаю)). | |
|
|
|
|
|
|
|
для: V!rus
(18.07.2005 в 00:19)
| | Если доступа к крону нет - нужно при входе любого человека делать рассчеты - когда было последнее добавление процента... Сколько суток прошло... Ну и циклично это количество суток "наверстать". Если посетителей много - просто выбираете случайного человека, у которого считать проценты. Так как, в среднем, посетитель бывает на трех страницах минимум - один человек посчитает у троих...
Если же доступ к крону есть... То все немного иначе. Это уже управление юниксом, однако у большинства хостеров есть панели управления - с кнопочками и рукояточками. Там можно выбрать ежесуточный запуск скрипта.
Надеюсь, что загвоздку я понял правильно... | |
|
|
|
|
|
|
|
для: Shorr Kan
(18.07.2005 в 01:47)
| | не то... вот вводиться дата начала и дата конца. вот такой должен быть код
if (прошло 24 часа) {
fopen"... и так далее }
Вот как мне это написать??? | |
|
|
|
|
|
|
|
для: V!rus
(19.07.2005 в 12:15)
| | Так а что собственно должен делать скрипт? Может уже есть готовые решения? | |
|
|
|
|
|
|
|
для: Loki
(19.07.2005 в 12:43)
| | Файл логов :
virus|1121708765
Shorr Kan|1121708812
Loki|1121708912
|
Скрипт проверки на >24 часов(можно заинклудить при удачном логине) :
<?php
session_start();
$period = 60*60*24;
$fp=file("logs.txt");
foreach($fp as $lines){
$line = explode("|", $lines);
if(($_SESSION['login']==$line[0])&&(($server_time - trim($line[1])) > $period)){
$update = true;
$line[1] = $server_time;
$lines = implode("|", $line);
}
unset($line);
$buffer .= $lines;
}
if($update){
$up = fopen("logs.txt", "w");
fputs($up, $buffer);
fclose($up);
/*и сюда код который прибавляет 1 к тому числу которое хранится
в каком нить файле,вот именно это допишите сами=)*/
}
?>
|
PS:это канеш расчитано на идентифицированых пользователей,
а как ловить гостей x3....куками наверно,дык и они не у всех в _on,
спросите у более опытных.... | |
|
|
|
|
|
|
|
для: method
(19.07.2005 в 17:44)
| | Может быть и то.. мне нужно, чтоб каждые сутки прибавлялся 1 процент. Я ввожу начальную и конечную дату. Скрипт рассчитывает сколько процентов прибавлять каждые сутки и если я введу 100 дней, то через два дня я открою страницу со скриптом и увижу 2 процента | |
|
|
|
|
|
|
|
для: V!rus
(19.07.2005 в 20:36)
| | что то не то у вас с процентами...ну впрочем я не знаю как там у вас.... | |
|
|
|
|
|
|
|
для: V!rus
(19.07.2005 в 20:36)
| | Я так понял без БД?
Могу сказать алгоритм :)
1) Задаем начальное время и вычисляем сколько дней пройдет вот моей функцией
<?
##########################################################
// Start GetTimeDiff
#############info##########################################
// $ldate - дата начальная
// $ndate - дата конечная
// $string - стиль вывода
// "y" - в годах
// "m" - в месяцах
// "w" - в неделях
// "d" - в днях
// "h" - в часах
// "i" - в минутах
// "s" - в секундах
// Дата указываеться в виде:
// 2005-07-20 12:53:13
##########################################################
function GetTimeDiff ($string,$ndate,$ldate)
{
$last_date = mktime(substr($ldate,11,13),
substr($ldate,14,16), substr($ldate,17,19),
substr($ldate,5,7), substr($ldate,8,10),
substr($ldate,0,4)); // Преобразование даты в секунды
$new_date = mktime(substr($ndate,11,13),
substr($ndate,14,16), substr($ndate,17,19),
substr($ndate,5,7), substr($ndate,8,10),
substr($ndate,0,4)); // Преобразование даты в секунды
$diffs=$new_date-$last_date; // Разность в секундах
$search = array(
"/y/",
"/m/",
"/w/",
"/d/",
"/h/",
"/i/",
"/s/"
); // Что замешаем
$replace = array(
bcdiv($diffs,31536000),
bcdiv($diffs,2628000),
bcdiv($diffs,604800),
bcdiv($diffs,86400),
bcdiv($diffs,3600),
bcdiv($diffs,60),
$diffs
); // Чем замешаем
$string = preg_replace($search,$replace,$string); // Замешаем
return $string; // Возврашаем значение
}
##########################################################
// End GetTimeDiff
##########################################################
?>
|
2) Вычисляем сколько времени пройдет :) и делим 100% на дни.
3) Теперь скрипт должен запускаться хотябы раз в день.
Проверять наличии последний записи в файле, и если ее нет, то добовлять пройент за день :) Как вычислить сколько прошло времени с начало запуска можно функций см. выше. | |
|
|
|
|
|
|
|
для: Akira
(19.07.2005 в 21:33)
| | Ниче не понял... | |
|
|
|
|
|
|
|
для: V!rus
(20.07.2005 в 13:44)
| |
<?
include_once('GetTimeDiff.php');
$ldate = '2005-07-19 12:53:13'; // Начальная дата
$ndate = '2005-07-30 12:53:13'; // Конечная дата
$timer = GetTimeDiff ('d',$ndate,$ldate); // Сколько дней пройдет
$percent_on_day = round(100/ $timer); // В день сколько процентов
$file = fopen('counter.dat','w');
$now = date('Y-m-d h:i:s');
$day = GetTimeDiff ('d',$now,$ldate); // Сколько дней прошло
$percent = $day * $percent_on_day;
fwrite($file, $percent.'%');
fclose($file);
echo file_get_contents('counter.dat');
?>
|
Выдаст 9%.
Это так к примеру :)) Там бы еще дописать кое-чего. Поэтому погрешность +- один день. | |
|
|
|