Оптимизация запроса

Тема в разделе "PHP", создана пользователем 4erepaha13, 7 ноя 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. 4erepaha13

    4erepaha13

    Регистр.:
    20 июн 2009
    Сообщения:
    155
    Симпатии:
    17
    Для постинга сообщений выбираю один из текстов, лежащих в папке
    PHP:
    $file_arr = array(); // массив, куда будут попадать пути к файлам
      
    while (($file readdir($dh)) !== false) { // перебираем всё, что есть в папке
       
    if(!is_dir($dir.'/'.$file) )// если это не папка 
    $file_arr[]= $dir.'/'.$file;} 
    И потом из массива рандомно берется один путь к файлу.
    Если в папке несколько тысяч текстов, то я так понимаю каждый раз по крону будет создаваться неслабая нагрузка на хостинг. Как это можно оптимизировать?
     
  2. diavolic

    diavolic

    Регистр.:
    17 мар 2010
    Сообщения:
    522
    Симпатии:
    102
    базу данных используй, она вроде для подобных задач и создана

    з.ы. если структура каталога меняется редко или не меняется вообще, можно кроном заполнять таблицу
     
  3. 4erepaha13

    4erepaha13

    Регистр.:
    20 июн 2009
    Сообщения:
    155
    Симпатии:
    17
    Для простоты решил буфер сделать из линков, который обновлять по крону или руками
    PHP:
    $file=fopen("list.txt","wb"); 
    $dir 'text'
    $dh opendir($dir); 
    while ((
    $url readdir($dh)) !== false) { 
       if(!
    is_dir($dir.'/'.$url) )
    fwrite($file,$dir.'/'.$url."\r\n"); 
      }
      
    fclose ($file);
      
    closedir($dh);
    Но не пойму где накосячил, не получается из него урлы забрать, ругается на file("тут функция рандомной строки из list.txt")
    Путь правильный и файл существует. Подозрительно выглядит лишний перенос после hello.txt, хотя в текстовой файле все урлы по одному в строку.
     
  4. stan2022

    stan2022 Создатель

    Регистр.:
    3 фев 2010
    Сообщения:
    21
    Симпатии:
    4
    Составить один раз рандомный список (бд или txt) и потом по очереди из этого стиска добавлять статьи.
     
  5. 4erepaha13

    4erepaha13

    Регистр.:
    20 июн 2009
    Сообщения:
    155
    Симпатии:
    17
    Затык в забирании урла из списка
    PHP:
    $tempfile('list.txt'); //получаю список урлов
    $size_tempsizeof($temp);
    $random_file$temp[mt_rand(0,$size_temp-1)]; //выбираю случайный
    $temp file($random_file); // забираю случайный файл
    и ошибка
    Что не так?
     
  6. Paroxizm

    Paroxizm Создатель

    Регистр.:
    30 июл 2009
    Сообщения:
    30
    Симпатии:
    11
    лишний пробел в имени файла. перед загрузкой файла прогони его имя через trim().
     
    4erepaha13 нравится это.
  7. propovednik

    propovednik Постоялец

    Регистр.:
    16 май 2008
    Сообщения:
    104
    Симпатии:
    21
    Что может быть не так если пхп тебе говорит что файла не существует? Значит его действительно не существует. Попробуй использовать для верности абсолютные пути, если плутаешь в относительных.
     
  8. 4erepaha13

    4erepaha13

    Регистр.:
    20 июн 2009
    Сообщения:
    155
    Симпатии:
    17
    так и не нашел как генерится лишний пробел, но трим его корректно обрезал и теперь все работает
     
Статус темы:
Закрыта.