Перейти к содержимому


- - - - -

Проблема в PHP


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 3

#1 PASHAxAHSAP

PASHAxAHSAP
  • Пользователь

  • Пользователь
  • 186 сообщений

Отправлено 07.10.2009 - 21:46

Добрый день!
Подскажите, почему не работает



<?php
$filename="http://www.php.ru/ma...ion.file.html";


if ($handle=fopen($filename, "r"))
print "FOPEN OK<BR>";

echo  $handle."<BR>";

$fsize=filesize($filename);



echo "FSIZE=".$fsize."<BR>";

$contents=fgets($handle, $fsize);

ECHO "CONTENTS=".$contents."<BR>";

fclose ($handle);


print $contents;

fclose ($handle);
?>

Выдает

FOPEN OK
Resource id #3
FSIZE=
FGETS OK
File=

Тот же результат с fread


<?php

еще вопрос  -  эти функции работы с файлами не работают с файлами в интернете - только с тем, что на локальном диске и к которым обращаюсь c:\...

К примеру, ниже размер файла не выводится, is_readable ничего не возвращает (если указан файл на диске, возвращает 1, а filesize - размер файла)

<?php
$filename='http://www.php.ru/ma...gets.html&#39;;
print (is_readable ($filename));
echo "<BR>";
echo 'Размер файла ' . $filename . ': ' . filesize($filename) . ' байтов';

?>

пробовал у себя и на сервере с PHP в интернете.

Сообщение отредактировал PASHAxAHSAP: 07.10.2009 - 22:14


#2 travanna

travanna
  • Пользователь

  • Пользователь
  • 136 сообщений

Отправлено 08.10.2009 - 19:34

потому что размер файла, который пишется через http:// в общем случае заранее неизвестен: сперва его надо скачать, а уже потом определять размер. Ошибка у вас в алгоритме.

#3 pahan76

pahan76
  • Консультант

  • Пользователь
  • 990 сообщений
  • Пол:Мужчина
  • Город:Химки, М.О.

Отправлено 09.10.2009 - 10:43

Цитата

еще вопрос - эти функции работы с файлами не работают с файлами в интернете
Работают. Только это зависит от настроек PHP и по умолчанию выключено. Плохо читали мануал, который пытаетесь скачать :-)

#4 PASHAxAHSAP

PASHAxAHSAP
  • Пользователь

  • Пользователь
  • 186 сообщений

Отправлено 09.10.2009 - 22:14

Просмотр сообщенияpahan76 (9 Октября 2009, 11:43) писал:

Работают. Только это зависит от настроек PHP и по умолчанию выключено. Плохо читали мануал, который пытаетесь скачать :-)
Я поставил
ini_set ('allow_url_fopen', TRUE);

В общем, как я понял, из удаленно файл можно открывать только посимвольно или чере file_get_contents.
Посимвольный FGETC и т.д. работали нормально, но я хотел этот процесс ускорить, т.к. файлы открывались ощутимо медленно даже на локальном сервере.

Кстати нашел функцию определения размера через массив данных о файле  (кто писал - не знаю)
function fsize($path)
{
$fp = fopen($path,r);
$inf = stream_get_meta_data($fp);
fclose($fp);
print_r ($inf);
foreach($inf[wrapper_data] as $v)
if (stristr($v,'content-length'))
{
$v = explode(':',$v);
return trim($v[1]);
};
}

Сообщение отредактировал PASHAxAHSAP: 09.10.2009 - 22:23





Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 скрытых пользователей