Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с файлами 
:(
    Опции темы
GQU
Дата 25.4.2011, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 13.2.2011

Репутация: нет
Всего: нет



Почему виснет
Код

<?php
$file = "./666.txt";
if(!($dpr = fopen($file, "r"))) die ("Невозможно открыть файл $file.");
while(!feof($fp)){ 
fseek($dpr,1,SEEK_CUR);
echo "<b>Оставшиеся символы: </b>";
fpassthru($dpr);
}
fclose($dpr);
?>


Это сообщение отредактировал(а) GQU - 25.4.2011, 18:51
PM MAIL   Вверх
ayax2005
Дата 26.4.2011, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


echo $smile
**


Профиль
Группа: Участник
Сообщений: 516
Регистрация: 17.4.2008
Где: Питер

Репутация: 2
Всего: 11



while(!feof($fp)){ - что за переменная?


--------------------
все вопросы - из-за неверной формулировки задачи
PM MAIL ICQ   Вверх
GQU
Дата 26.4.2011, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 13.2.2011

Репутация: нет
Всего: нет



Код

<?php
$file = "./666.txt";
if(!($dpr = fopen($file, "r"))) die ("Невозможно открыть файл $file.");
while(!feof($dpr)){ 
fseek($dpr,1,SEEK_SET);
echo "<b>Не прочитанные символы: </b>";
fpassthru($dpr);
}
fclose($dpr);
?>

Ошибся так правильно, но все равно не работает- виснет
В чем дело ?
Почему после смещения (Seek) оно(смещение опять устанавливается в 0?) 
PM MAIL   Вверх
ayax2005
Дата 26.4.2011, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


echo $smile
**


Профиль
Группа: Участник
Сообщений: 516
Регистрация: 17.4.2008
Где: Питер

Репутация: 2
Всего: 11



замените fseek($dpr,1,SEEK_SET); на if(fseek($dpr,1,SEEK_SET)==0)


--------------------
все вопросы - из-за неверной формулировки задачи
PM MAIL ICQ   Вверх
GQU
Дата 26.4.2011, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 13.2.2011

Репутация: нет
Всего: нет



Код

<?php
$file = "./666.txt";
if(!($dpr = fopen($file, "r"))) die ("Невозможно открыть файл $file.");
while(!feof($dpr)){ 
if(fseek($dpr,1,SEEK_SET)==0) 
echo "<b>Не прочитанные символы: </b>";
fpassthru($dpr);
}
fclose($dpr);
?>

Ну вот как получилось и что - все равно виснет
PM MAIL   Вверх
GQU
Дата 26.4.2011, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 13.2.2011

Репутация: нет
Всего: нет



Код

<?php
$file = "./666.txt";
if(!($dpr = fopen($file, "r"))) die ("Невозможно открыть файл $file.");
while(!feof($dpr)){ 
fseek($dpr,1,SEEK_SET);
echo "<b>Указатель находится в позиции: </b>";
echo ftell($dpr);
}
fclose($dpr);
?> 

Почему ftell всегда выводит 1? 
PM MAIL   Вверх
bars80080
Дата 26.4.2011, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



1,SEEK_SET - означает установить указатель на позицию 1. вы не даёте завершиться циклу
PM MAIL WWW   Вверх
GQU
Дата 26.4.2011, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 13.2.2011

Репутация: нет
Всего: нет



Код

<?php
$file = "./666.txt";
if(!($dpr = fopen($file, "r"))) die ("Невозможно открыть файл $file.");
while(!feof($dpr)){ 
fseek($dpr,1,SEEK_CUR);
echo "<b>Указатель находится в позиции: </b>";
echo ftell($dpr);
}
fclose($dpr);
?> 

А так почему eoef не останавливает цикл ?
PM MAIL   Вверх
bars80080
Дата 26.4.2011, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



потому что feof станет true только когда будет достигнут конец файла, а вы устанавливаете внутри цикла позицию чтения всегда на 1.
PM MAIL WWW   Вверх
ksnk
Дата 26.4.2011, 19:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Цитата(GQU @  26.4.2011,  19:09 Найти цитируемый пост)
А так почему eoef не останавливает цикл ? 

потому, что feof устанавливается после операции чтения. 
Код

while(fseek($dpr,1,SEEK_CUR)===0){
...

може так сработает?


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0541 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.