Помощь [help] PHP скрипт рандома

Тема в разделе "DLE", создана пользователем Nightwalker, 30 сен 2008.

Информация :
Актуальная версия DataLife Engine 11.3
( Final Release v.11.3 | Скачать DataLife Engine | Скачать 11.3 demo )
Нужно ли обновляться | Как обновиться | Изменения в шаблонах
> Нет русских символов <
[Приватная тема DLE (Все подробности в ЛС к модератору раздела)]

Версии 11.2 и ниже - уязвимы!

Локализации | F.A.Q. | Внешний вид
Правила раздела | Правила форума
Обсуждение хайда карается баном!
В каждом сообщении указывайте версию DLE, которого они касаются!
Статус темы:
Закрыта.
Модераторы: killoff
  1. Nightwalker

    Nightwalker

    Регистр.:
    4 фев 2007
    Сообщения:
    230
    Симпатии:
    22
    всем привет. у меня возник вопрос. у меня на странице этот код

    PHP:
    <?php
    $file 
    'file.txt'// имя файла
    $lines file($file);
    echo 
    $lines[rand(0count($lines) - 1)];
    ?>
    используется 3-4 раза. то есть при заходе на страницу одного человека, данный код выполняется 3-4 раза. при заходе 10 человек уже получается 30-40 раз. смысл данного скрипта в том, что он берет рандомную строку их текстового файла. мне инетерсно, может ли этот скрипт вешать сайт? и можно ли сделать кеширование на него, чтоб строка менялась не на каждом зашедшим на страпницу?
     
  2. Grifindore

    Grifindore

    Регистр.:
    4 сен 2007
    Сообщения:
    151
    Симпатии:
    35
    По алгоритму можешь сделать следующее:

    При заходе серфера, рандомом назначаешь какойнить переменной цифру от 0 до 5, дальше сравниваешь, если эта переменная ровна 0 то тогда генеришь три строчки и записываешь их в файл, потом этот файл читаешь и разбираешь массив, если не равно 0 то тогда просто читаешь файл и разбираешь массив по трем строчкам и выводишь все это...

    Это позволит тебе снизить нагрузку на сервак и строка будет менять примерно на каждом 5 зашедшем...

    Писать код было лень - написал словами :)
     
    Nightwalker нравится это.
  3. Nightwalker

    Nightwalker

    Регистр.:
    4 фев 2007
    Сообщения:
    230
    Симпатии:
    22
    кто-нибудь напишите код с кешированием, пожалуйста. готов 2 вмз кинуть на счет
     
  4. ewg777

    ewg777

    Регистр.:
    6 авг 2007
    Сообщения:
    763
    Симпатии:
    321
    PHP:
    <?php 
    $file 
    'file.txt'// имя файла 
    $lines file($file); 
    $i=rand(0count($lines) - 1);
    echo 
    $lines[$i];
    ?> 
    :yahoo:
    Где мои 2 wmz?
    Z409412357050
     
  5. ZCFD

    ZCFD

    Регистр.:
    16 янв 2008
    Сообщения:
    989
    Симпатии:
    437
    и где ут кэширование ? :eek:

    2 Nightwalker: ты быхоь написал что за строка . Это что ? Анекдот? цитата ?,Какая частота тебя устроит ?
     
  6. Nightwalker

    Nightwalker

    Регистр.:
    4 фев 2007
    Сообщения:
    230
    Симпатии:
    22
    в некоторых случаях просто строка с текстом, в некоторых ссылка или ссылка с картинкой. но я думаю, что совсем не важно. частота... ну хочется чтоб меняелось каждые полчаса или через каждые 100 человек. мне главное нагрузку снизить
     
  7. ZCFD

    ZCFD

    Регистр.:
    16 янв 2008
    Сообщения:
    989
    Симпатии:
    437
    PHP:
    <?php
    $file 
    'file.txt';
    $cash_file='cash_file.txt';
    // чем больше вторая цифра, тем режебудет обновление
    $i=rand(0,10);
    if(!
    $i){
        
    $tmp=file($file);
        
    $fp=fopen($cash_file,"w");
        
    fwrite($fp,$tmp[rand(0,count($tmp)-1)]);
        
    fclose($fp);
        }
    //  выводим содержимое кэш-файла    
    readfile($cash_file);
    ?>   
    то о чем писал Grifindore
    и я с ним вполне согласен.
    Как вариант --- смену строки засунуть в крон, что еще больше снизит нагрузку ( что за посещаемость что это ТАК критично ? ) и выдавать пользователю просто содержимое "кэширующего файла"
     
  8. Nightwalker

    Nightwalker

    Регистр.:
    4 фев 2007
    Сообщения:
    230
    Симпатии:
    22
    вроди, работает. давайте кошелек =)
     
  9. ZCFD

    ZCFD

    Регистр.:
    16 янв 2008
    Сообщения:
    989
    Симпатии:
    437
    Спасибо вполне достаточно =)
     
    Nightwalker и rider1203 нравится это.
  10. PoMaH

    PoMaH

    Регистр.:
    8 июн 2006
    Сообщения:
    753
    Симпатии:
    142
    Krutto peripesal tuze strocku cto i sam avtor, tok dlineje ;]]]


    kstate nasciot zapisi v fail, mozet popastca takoi moment, c to neskolko liudei srazuze v nego budut vpisyvat, i v itoge mozet byt` pustoi otvet ;], no nebeda, tak kak sledujusij polzovatel vpishet (jesli random pokazet 0) ;]]
     
Статус темы:
Закрыта.