Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (2) [1] 2  ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> как узнать последнюю строку файла?
Bolik  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 362
Пользователь №: 35724
На форуме: 4 года, 8 месяцев
Карма: 6




Привет,

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

допустим читаем файл по строкам


$lastBatch = false;
$handle = fopen($file, "r");
$i=0;
while ($line = fgets($handle)) {
$batch[] = trim($line);
$i++;
if ($i==10) {
//action
$i=0;
unset($batch);
$batch = array();
}
}

if(!empty($batch)) {
//action
$lastBatch = true;
}


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

спасибо!
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5662
Пользователь №: 35718
На форуме: 4 года, 8 месяцев, 1 день
Карма: 176




Цитата (Bolik @ 30.11.2015 - 16:53)
feof тут тоже не поможет

как так то?


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Bolik  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 362
Пользователь №: 35724
На форуме: 4 года, 8 месяцев
Карма: 6




feof в цикле while вернет false
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5662
Пользователь №: 35718
На форуме: 4 года, 8 месяцев, 1 день
Карма: 176




а должен что вернуть?


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Bolik  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 362
Пользователь №: 35724
На форуме: 4 года, 8 месяцев
Карма: 6




а мне нужно в цикле как-то узнать, что это последняя строка
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5662
Пользователь №: 35718
На форуме: 4 года, 8 месяцев, 1 день
Карма: 176




для того что бы узнать о конце файла, существует функция feof()


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
depp  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 390
Пользователь №: 40589
На форуме: 2 года, 7 месяцев, 16 дней
Карма: 22




если файл очень большой, то определяй сперва его размер.
потом прочитай 1000-2000 байт от конца файла. и определи последнюю строку.
там со сдвигом можно.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5662
Пользователь №: 35718
На форуме: 4 года, 8 месяцев, 1 день
Карма: 176




depp, фак перефак, чем тебе то feof() не угодил?


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Bolik  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 362
Пользователь №: 35724
На форуме: 4 года, 8 месяцев
Карма: 6




Valick покажи пожалуйста, если не в лом, как в моем случае поможет feof.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5662
Пользователь №: 35718
На форуме: 4 года, 8 месяцев, 1 день
Карма: 176




Bolik, вы в какой валюте предпочитаете платить? smile.gif
200р и будет вам готовый код, да еще и с блокировкой файла, о которой вы кстати не побеспокоились. Хороший кстати стимул подумать самому, и мне барыге не платить biggrin.gif


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Bolik  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 362
Пользователь №: 35724
На форуме: 4 года, 8 месяцев
Карма: 6




Цитата
Bolik, вы в какой валюте предпочитаете платить? smile.gif


))) все ясно. зачем мне блокировка файла, вопрос был только о данном конкретном примере. остальное я уж как-то напишу.

решение кстати я придумал только что по наводке depp за что ему спасибо.

$batches = (filesize($file)/кол-во байт в строке)/размер пакета;

а там уже дело техники.

с feof вопрос открыт smile.gif
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
waldicom  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 6277
Пользователь №: 5552
На форуме: 9 лет, 13 дней
Карма: 164




Valick, а ты не профессор, случайно? Причем я в прямом смысле спрашиваю. Может ученая степень или диссертацию защитил?


--------------------
Свои мозги еще никто не отменял.
Телепатов нету.
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5662
Пользователь №: 35718
На форуме: 4 года, 8 месяцев, 1 день
Карма: 176




waldicom, давай рассуждать логически. Вот если я до этого момента ни о чем подобном не говорил, с чего ты взял, что я прям таки сегодня расколюсь? smile.gif

ну всё больше не могу молчать, конечно же я профессор

а вот так я провожу всё свободное время biggrin.gif
http://www.youtube.com/watch?v=EmY5CV3ksTY


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
sergeiss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Сидел он, дум великих полон - и вдаль глядел
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 15394
Пользователь №: 4190
На форуме: 9 лет, 5 месяцев, 14 дней
Карма: 470




Bolik, а так?

$handle = fopen($file, "r");
$batch=array();
$i=0;
do {
$line = fgets($handle));
if( !$line ) {
if( !empty($batch) ) {
// action
}
continue;
}
$batch[] = trim($line);
$i++;
if ($i==10) {
//action
$i=0;
unset($batch);
$batch = array();
}
}
while( $line );



--------------------
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
waldicom  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 6277
Пользователь №: 5552
На форуме: 9 лет, 13 дней
Карма: 164




Цитата (Valick @ 30.11.2015 - 20:42)
Вот если я до этого момента ни о чем подобном не говорил, с чего ты взял, что я прям таки сегодня расколюсь?

Все когда происходит в первый раз.


--------------------
Свои мозги еще никто не отменял.
Телепатов нету.
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (2) [1] 2  Ответ в темуСоздание новой темыСоздание опроса