Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [php] поставить ограничение на выполнение скрипта, одним юзером за опред. кол-во времени 
:(
    Опции темы
zloyGamer
Дата 12.11.2010, 14:16 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 67
Регистрация: 24.2.2008
Где: аватар какает

Репутация: нет
Всего: нет



над ограничить количество загрузок одной и тойже страницы в определ. промежуток времени,
если юзер по нескольку раз перезапрашивает одну и туже страницу, то выдавать ему последний вариант а выполнение остальных(запрошенных до этого) обрубать!

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

вот к примеру мой бесполезный вариант на сессиях:
Код

function load_wait($wait_time = 2000)
{//задаем время в мс. за которое можно загрузить эту страницу не более 1 раза
  $time_start = microtime(1);
  session_start();
  
  $var_counter   = 'load_count';
  $var_prev_load = 'prev_load_time';
  
  if (!isset($_SESSION[$var_counter]))
  {
    $_SESSION[$var_counter] = 1;
    $_SESSION[$var_prev_load] = microtime(1);
    return;
  }
  $_SESSION[$var_counter]++;
  
  $query_count = $_SESSION[$var_counter];

  
  if (!isset($_SESSION[$var_prev_load]))
  {//хз как, но такое тож случаецо
    $_SESSION[$var_prev_load] = microtime(1);
  }
  
  $prev_time = $_SESSION[$var_prev_load];
  
  $wait_need = $wait_time-round((microtime(1)-$prev_time)*1000,0);
  if($wait_need>0)
  {
    //echo "wait $wait_need ms ... <br>";
    usleep($wait_need);//usleep похоже невсегда срабатывает
    $wait_need = $wait_time-round((microtime(1)-$prev_time)*1000,0);
    if($wait_need>1000)
      sleep($wait_need/1000);
  }
  
  $log_file = "log/$var_counter.query_close";
  
  if($query_count<$_SESSION[$var_counter])
  {//если после ожидания были ещё попытки загрузить данные то эта попытка уже не ф щёт
    writeToFile($log_file,"ab","$var_counter == $query_count / ".$_SESSION[$var_counter]."\n");
    return 0;
  }
  writeToFile($log_file,"ab","test return 1\n");
  $_SESSION[$var_prev_load] = microtime(1);
  return 1;
}
//далее в начале страницы вставляем:
if(load_wait(5000)==0) exit(0);

в этом скрипте я рассчитывал на то что значение $_SESSION[$var_counter] при каждом её запросе каждый раз обновляется и выдает текущее значение для всех запущеных скриптоф, но как выяснилось это не так, получается в скрипте у неё тока последнее значение переменной сесси... или может йа чего не учел/незнаю.

подскажите если не лень/не жалко/не в лом какойнить толковый вариантец на такой случай

Это сообщение отредактировал(а) zloyGamer - 12.11.2010, 14:20
PM MAIL   Вверх
zloyGamer
Дата 13.11.2010, 09:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 67
Регистрация: 24.2.2008
Где: аватар какает

Репутация: нет
Всего: нет



ну кто нибудь.., неужели никто не сталкивался? 
полюбому каждый, (или как минимум через одного )), пхпшник както решал подобное...
PM MAIL   Вверх
bars80080
Дата 13.11.2010, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



выставлять кэш на нужный промежуток времени? пускай браузер вообще не пускает запросы в сеть

а иначе это придётся сохранять страницу в статическом варианте и отдавать уже её. стоит ли оно того?
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0429 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.