Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Добавление через некоторое время
 
 автор: V!rus   (18.07.2005 в 00:19)   письмо автору
 
 

Подскажите, плз, как написать скрипт, который через определенное время добавлял 1 %???
Короче каждые 24 часа добавляется один процент(открывается файл и в него пишется(это я сделаю)).

   
 
 автор: Shorr Kan   (18.07.2005 в 01:47)   письмо автору
 
   для: V!rus   (18.07.2005 в 00:19)
 

Если доступа к крону нет - нужно при входе любого человека делать рассчеты - когда было последнее добавление процента... Сколько суток прошло... Ну и циклично это количество суток "наверстать". Если посетителей много - просто выбираете случайного человека, у которого считать проценты. Так как, в среднем, посетитель бывает на трех страницах минимум - один человек посчитает у троих...

Если же доступ к крону есть... То все немного иначе. Это уже управление юниксом, однако у большинства хостеров есть панели управления - с кнопочками и рукояточками. Там можно выбрать ежесуточный запуск скрипта.

Надеюсь, что загвоздку я понял правильно...

   
 
 автор: V!rus   (19.07.2005 в 12:15)   письмо автору
 
   для: Shorr Kan   (18.07.2005 в 01:47)
 

не то... вот вводиться дата начала и дата конца. вот такой должен быть код
if (прошло 24 часа) {
fopen"... и так далее }
Вот как мне это написать???

   
 
 автор: Loki   (19.07.2005 в 12:43)   письмо автору
 
   для: V!rus   (19.07.2005 в 12:15)
 

Так а что собственно должен делать скрипт? Может уже есть готовые решения?

   
 
 автор: method   (19.07.2005 в 17:44)   письмо автору
 
   для: 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,
спросите у более опытных....

   
 
 автор: V!rus   (19.07.2005 в 20:36)   письмо автору
 
   для: method   (19.07.2005 в 17:44)
 

Может быть и то.. мне нужно, чтоб каждые сутки прибавлялся 1 процент. Я ввожу начальную и конечную дату. Скрипт рассчитывает сколько процентов прибавлять каждые сутки и если я введу 100 дней, то через два дня я открою страницу со скриптом и увижу 2 процента

   
 
 автор: method   (19.07.2005 в 21:04)   письмо автору
 
   для: V!rus   (19.07.2005 в 20:36)
 

что то не то у вас с процентами...ну впрочем я не знаю как там у вас....

   
 
 автор: Akira   (19.07.2005 в 21:33)   письмо автору
 
   для: 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) Теперь скрипт должен запускаться хотябы раз в день.
Проверять наличии последний записи в файле, и если ее нет, то добовлять пройент за день :) Как вычислить сколько прошло времени с начало запуска можно функций см. выше.

   
 
 автор: V!rus   (20.07.2005 в 13:44)   письмо автору
 
   для: Akira   (19.07.2005 в 21:33)
 

Ниче не понял...

   
 
 автор: Akira   (20.07.2005 в 14:24)   письмо автору
 
   для: 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%.
Это так к примеру :)) Там бы еще дописать кое-чего. Поэтому погрешность +- один день.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования