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
Форумы портала PHP.SU :: Версия для печати :: file_get_contents траббла.
Форумы портала PHP.SU » » Работа с файловой системой и файлами » file_get_contents траббла.

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

1. sima007 - 29 Апреля, 2011 - 20:50:37 - перейти к сообщению
Добрый день всем, возникла проблема с file_get_contents.
Дело в том что я закачиваю этой функцией файл размером в 3мб на свой сервер.
Всё происходит при submit-e формы.
И происходит так:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. echo '1' ;
  3. file_get_contents("http://file_patch.zip");
  4. ?>

И 1 на экран выводится только после закачки файла, не следуя логике программы.
Как это можно иправить?
2. ALEN - 29 Апреля, 2011 - 20:58:32 - перейти к сообщению
Не вижу, чтоб файл выводили на экран или запись.
3. Uchkuma - 29 Апреля, 2011 - 21:01:11 - перейти к сообщению
4. sima007 - 29 Апреля, 2011 - 21:04:15 - перейти к сообщению
ALEN пишет:
Не вижу, чтоб файл выводили на экран или запись.

Это происходит после.Но сама проблема в file_get_contents.
Uchkuma пишет:
ob_flush

Поставил перед file_get_contents, та-же проблема.
5. ALEN - 29 Апреля, 2011 - 21:10:30 - перейти к сообщению
file_get_contents -- Получить содержимое файла в виде одной строки
file_put_contents -- Записать строку в файл

=>

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. // читаем файл в переменную $file
  3. $file=file_get_contents("http://file_patch.zip");
  4. // Записываем значение переменной $file в файл file_patch.zip
  5. file_put_contents ('file_patch.zip',$file);


Лучше использовать CURL - тогда не будет проблем с работой на некоторых серверах .

----------------

И да забыл сильно много оперативки жрет такой процесс -> тем более CURL и запись в файл
6. sima007 - 29 Апреля, 2011 - 21:13:16 - перейти к сообщению
ALEN пишет:
file_get_contents -- Получить содержимое файла в виде одной строки
file_put_contents -- Записать строку в файл

=>

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. // читаем файл в переменную $file
  3. $file=file_get_contents("http://file_patch.zip");
  4. // Записываем значение переменной $file в файл file_patch.zip
  5. file_put_contents ('file_patch.zip',$file);


Лучше использовать CURL - тогда не будет проблем с работой на некоторых серверах .

----------------

И да забыл сильно много оперативки жрет такой процесс -> тем более CURL и запись в файл


Именно так у меня работает, но нарушается логика, а курл на некоторых серверах не установлен.
А буферизация вывода - совсем не в тему.
(Добавление)
Переписал с curl-ом, та-же история.
7. ALEN - 29 Апреля, 2011 - 21:31:16 - перейти к сообщению
код покажи
8. sima007 - 29 Апреля, 2011 - 21:35:36 - перейти к сообщению
ALEN пишет:
код покажи

С file_get_contents:
http://pastebin[dot]com/H1xapppD
С curl-ом:
http://pastebin[dot]com/aqGhUQM7
(Добавление)
Ну вот, показал код, а дальше? Ниндзя
9. DlTA - 29 Апреля, 2011 - 22:10:04 - перейти к сообщению
sima007 пишет:
И 1 на экран выводится только после закачки файла, не следуя логике программы.
Как это можно иправить?

вывод в браузер сервер производит порциями, так как "1" это очень маленькая часть от заданного (где то там) объема, то и этот текст возвращается в браузер вместе с тем что идет после "1".

вариант исправления скорее всего будет состоять в создании нескольких запросов и использвании ajax или ченить другого
10. sima007 - 29 Апреля, 2011 - 22:11:19 - перейти к сообщению
DlTA пишет:
sima007 пишет:
И 1 на экран выводится только после закачки файла, не следуя логике программы.
Как это можно иправить?

вывод в браузер сервер производит порциями, так как "1" это очень маленькая часть от заданного (где то там) объема, то и этот текст возвращается в браузер вместе с тем что идет после "1".

вариант исправления скорее всего будет состоять в создании нескольких запросов и использвании ajax или ченить другого

Смотрите в полный код, который я дал выше.
По поводу AJAX - не хочу углублятся, как делить запросы на сервер им, тем более файл должен быть один.
11. DlTA - 29 Апреля, 2011 - 22:18:14 - перейти к сообщению
sima007 пишет:
Смотрите в полный код, который я дал выше.

а что я там должен увидеть?
12. sima007 - 29 Апреля, 2011 - 22:19:16 - перейти к сообщению
sima007 пишет:
вывод в браузер сервер производит порциями, так как "1" это очень маленькая часть от заданного (где то там) объема

Вы видите что там больше чем "1" ?
13. DlTA - 29 Апреля, 2011 - 22:24:46 - перейти к сообщению
вы реально думаете что в одном пакете который пересывается через сеть передается 1 (2) символа в браузер?!
14. sima007 - 29 Апреля, 2011 - 22:27:40 - перейти к сообщению
DlTA пишет:
вы реально думаете что в одном пакете который пересывается через сеть передается 1 (2) символа в браузер?!

При чём здесь это?
Вы можете по теме написать?
15. DlTA - 29 Апреля, 2011 - 22:32:48 - перейти к сообщению
честно говоря я и не знаю чем вам не угодил мой первый пост
возможно если проблема не в том что написано в заголовке темы, и вы сможете составить понятный вопрос, то я смогу чем либо помочь.

 

Powered by ExBB FM 1.0 RC1