function и static и скорость работы

Тема в разделе "PHP", создана пользователем D@nil, 20 фев 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. D@nil

    D@nil

    Регистр.:
    1 окт 2006
    Сообщения:
    338
    Симпатии:
    122
    Здравствуйте подскажите

    данный код будет оптимален для вывода случайной строки?

    PHP:
    function get_str(){
        static 
    $strs;
        if(!isset(
    $strs)) 
        
    $strs file('strs.txt',FILE_IGNORE_NEW_LINES);
        return 
    trim($strs[array_rand$strs)]);
    }    
    Массив 1н раз читае6тся и далее хранится в памяти
     
  2. *mm*

    *mm* Создатель

    Регистр.:
    1 окт 2009
    Сообщения:
    29
    Симпатии:
    2
    Наиболее оптимально будет воспользоваться библиотечной функцией rand().
     
  3. bliss

    bliss Постоялец

    Регистр.:
    29 июн 2008
    Сообщения:
    72
    Симпатии:
    8
    да, вполне оптимальное решение.
    только после array_rand открывающая скобочка пропущена)

    Добавлено через 4 минуты
    с чего бы так?
     
  4. *mm*

    *mm* Создатель

    Регистр.:
    1 окт 2009
    Сообщения:
    29
    Симпатии:
    2
    Потому, что любая встроенная функция, всегда будет работать быстрее самописной.
     
  5. bliss

    bliss Постоялец

    Регистр.:
    29 июн 2008
    Сообщения:
    72
    Симпатии:
    8
    какая же из вышеучаствующих функций «самописная»?
    или если ты имеешь ввиду саму get_str(), то интересно как же ты собираешься заменить её функционал функцией rand()?
     
  6. *mm*

    *mm* Создатель

    Регистр.:
    1 окт 2009
    Сообщения:
    29
    Симпатии:
    2
    Уважаемый, откройте глаза, функция, которую создает автор, перегружена ненужными действиями. Для того чтобы получить контент и рандомно вывести строку, нужно воспользоваться парой встроенных функций.
    PS Мне меньше всего интересно спорить с Вами, я выразил свое мнение.
     
  7. bliss

    bliss Постоялец

    Регистр.:
    29 июн 2008
    Сообщения:
    72
    Симпатии:
    8
    говоря А, говорите и Б. вы оспорили пример, не предоставив подтверждения своих слов. в последнем сообщении — повторно. опишите же, как должен выглядеть более оптимальный код на ваш взгляд.

    з.ы.: это форум, выражая своё мнение вы уже в полушаге от спора.
     
  8. D@nil

    D@nil

    Регистр.:
    1 окт 2006
    Сообщения:
    338
    Симпатии:
    122
    Видемо вы не понимаете, как работает данная функция если сделали такое заключение.

    Есть еще идея читать по строке из файла, а затем ее удалять.

    или читать случайную строку из файла, указатель можно сдвинуть на стлучайную строку зная кол-во строк?
     
  9. venetu

    venetu

    Регистр.:
    28 мар 2007
    Сообщения:
    735
    Симпатии:
    261
    Можно и не читать весь файл, если памяти мало а файл большой.
    Чтобы получить случайную строку из файла в котором строки неодинаковой длины, надо что-то типа такого

    PHP:
    $filename 'file.txt'
    $fp fopen($filename,'r');
    fseek($fp,rand(0,filesize($filename)));
    fgets($fp);
    if (
    feof($fp)) fseek($fp,0);
    $str fgets($fp); // случайная строка файла
    Но если есть возможность прочитать весь файл в память, то конечно же array_rand() будет предпочтительнее.
     
  10. D@nil

    D@nil

    Регистр.:
    1 окт 2006
    Сообщения:
    338
    Симпатии:
    122
    Интересная идея, а можешь описать как данный код работает?

    Еще есть идея, перемешать строки в файле и просто брать строку а потом ее удалять, как думаете это будет менее ресурс затратно?
     
Статус темы:
Закрыта.