Друзья, задача такая. Есть csv вида: "текст", "картинка" длиной 1000+ срок. Раз в день (настрою крон) скрипт должен обработать первые 5 строк (добавить к каждой строке время и отправить по почте). Вижу 2 варианта: брать по одной строке с 1 по 5, обрабатывать, удалять со сдвигом брать 5 строк, обрабатывать, записывать номер последней обработанной строки в файл, а на следующий день начинать обработку с записанной строки В этой теме Чтение и удаление одной строки из файла YSandro предложил решение по второму варианту, которое прекрасно работает с txt (запоминает позицию). Да вот только я никак не соображу, как его адаптировать под csv, чтобы запоминалась строка. Одним словом, я пытаюсь вот этот свой код совместить с указанным выше решением, но без успеха. Надеюсь на помощь сообщества. PHP: $row = 1; $handle = fopen("test.csv", "r"); for ($i = strtotime('08:00'); $data = fgetcsv($handle ); ++$i) { $text = $data[0]; $image = $data[1]; //Здесь делаю, что нужно echo "<p> Номер строки: $row: \n"; echo "Первый столбик: $text "; echo "Второй столбик: $image "; echo date("F j, Y, g:i a",$i).'</br>'; $i = $i + 3600*3; $row++; } fclose($handle);
Все вроде неплохо, строку записывает, но тем не менее начинает с начала, с первой PHP: $handlePos = @fopen('pos.txt', 'r+');//открываем файл с последним положением if($handlePos){ if (($buffer = fgets($handlePos, 10)) !== false) { $startPos=(int)$buffer; if($startPos<0) $startPos=0; $row = 1; $handle = fopen("test.csv", "rb"); $buffer=''; $newPos=$startPos; for ($i = strtotime('08:00'); $buffer = fgetcsv($handle ); ++$i) { if ($row <6){ $text = $buffer[0]; $image = $buffer[1]; //Здесь делаю, что нужно echo "<p> Номер строки: $row: \n"; echo "Первый столбик: $text "; echo "Второй столбик: $image "; echo date("F j, Y, g:i a",$i).'</br>'; $i = $i + 3600*3; $row++; $newPos=$row;//запишем номер последней обработанной строки } } fclose($handle); if($newPos!=$startPos){ rewind($handlePos); fwrite($handlePos, $newPos);//записываем позицию, на которой остановились } fclose($handlePos); } }else{ echo 'что-то с файлом pos.txt'; }