Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Нужно быстро считать 3 строчки из файлов

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Rooner
Отправлено: 06 Февраля, 2013 - 15:40:23
Post Id


Посетитель


Покинул форум
Сообщений всего: 291
Дата рег-ции: Авг. 2010  


Помог: 0 раз(а)




У меня есть примерно 30 файлов (модулей), в которых я хочу хранить название, описание, требования модуля, чтобы потом скриптом просканировать эти файлы и получить эти описания для модулей. Каталог с модулями я просканировал, а как мне быстро зайти в каждый файл и считать оттуда только первые 3 строки, начиная со второй?
Функций для чтения файлов много, какую выбрать, чтобы работала побыстрее?
В результате хочу получить массив:
[модуль 1]
[name] модуль1
[descr] описание модуля
[need] требования модуля
[модуль 2]
[name] модуль2
[descr] описание модуля
[need] требования модуля
(Добавление)
Вроде так работает, но быстро ли...
PHP:
скопировать код в буфер обмена
  1.  
  2. $handle = fopen("modules/sendmail/sendmail.php", "r");
  3. $i = 0;
  4. while (($i<=3)) {
  5.   $buffer = fgets($handle, 4096);
  6.   echo $buffer;
  7.   $i++;
  8. }
  9. fclose($handle);
  10.  
 
 Top
createl
Отправлено: 06 Февраля, 2013 - 15:57:52
Post Id



Гость


Покинул форум
Сообщений всего: 87
Дата рег-ции: Янв. 2012  


Помог: 0 раз(а)




Возможно хватит даже file_get_contents ()
(Добавление)
Тупанул. Если три строки Тогда fgets()
(Добавление)
createl пишет:
Вроде так работает, но быстро ли...

Быстрее будет только если SSD поставишь!
 
 Top
EuGen Администратор
Отправлено: 06 Февраля, 2013 - 16:12:56
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Rooner
PHP:
скопировать код в буфер обмена
  1. function file_slice($sName, $iStart=0, $iLength=null)
  2. {
  3.    $iStart = (int)$iStart;
  4.    $iLength= (int)$iLength;
  5.    if($iStart<0 || $iLength<=0)
  6.    {
  7.       return null;
  8.    }
  9.    if(!file_exists($sName) || !is_readable($sName))
  10.    {
  11.       return null;
  12.    }
  13.    $rFile  = fopen($sName, 'r');
  14.    $iPos   = 0;
  15.    while($iPos++<$iStart && !feof($rFile))
  16.    {
  17.       fgets($rFile);
  18.    }
  19.    if(feof($rFile))
  20.    {
  21.       fclose($rFile);
  22.       return null;
  23.    }
  24.    $iPos  = 0;
  25.    $sData = '';
  26.    while(!feof($rFile) && $iPos++<$iLength)
  27.    {
  28.       $sData.=fgets($rFile);
  29.    }
  30.    fclose($rFile);
  31.    return $sData;
  32. }

- как универсальный безопасный вариант. Вызов
PHP:
скопировать код в буфер обмена
  1. $sContent = file_slice('/path/to/file', 1, 3); // get 3 lines starting from 1 (global start is 0)

даст нужный результат.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB