За последние 24 часа нас посетили 18019 программистов и 1655 роботов. Сейчас ищут 1467 программистов ...

fopen - почему нельзя использовать?

Тема в разделе "PHP для новичков", создана пользователем snoggl, 6 фев 2009.

  1. snoggl

    snoggl Активный пользователь

    С нами с:
    18 ноя 2006
    Сообщения:
    41
    Симпатии:
    0
    Адрес:
    СПб
    Здравствуйте,
    подскажите, почему нельзя использовать fopen для удаленных соединений?
     
  2. Ti

    Ti Активный пользователь

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    кто такое сказал?
     
  3. snoggl

    snoggl Активный пользователь

    С нами с:
    18 ноя 2006
    Сообщения:
    41
    Симпатии:
    0
    Адрес:
    СПб
    владелец одного из хостинга заметил, что использование fopen для удаленных соединений - признак дурного тона
     
  4. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    желательно обращаться к удаленному файлу один раз, а не "глянул-подумал - еще раз глянул."
     
  5. snoggl

    snoggl Активный пользователь

    С нами с:
    18 ноя 2006
    Сообщения:
    41
    Симпатии:
    0
    Адрес:
    СПб
    не очень понятно
     
  6. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    открыл соединение - прочел - закрыл и чужому дяде больше не мешаешь.
    а не "открыл - и занял место пока шнурки не завяжу"
     
  7. snoggl

    snoggl Активный пользователь

    С нами с:
    18 ноя 2006
    Сообщения:
    41
    Симпатии:
    0
    Адрес:
    СПб
    а fsockopen по другому работает?
     
  8. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    он по другому соединяется, но в первую очередь подумай, не стоит ли скачать файл к себе и дальше уже с ним ковыряться.
     
  9. snoggl

    snoggl Активный пользователь

    С нами с:
    18 ноя 2006
    Сообщения:
    41
    Симпатии:
    0
    Адрес:
    СПб
    я так и делаю всегда
     
  10. snoggl

    snoggl Активный пользователь

    С нами с:
    18 ноя 2006
    Сообщения:
    41
    Симпатии:
    0
    Адрес:
    СПб
    Просто мне не всегда нужен сам открываемый файл.
    У меня есть конструкция, которая трогает скрипт функцией fopen, а потом сразу закрывает. А этот скрипт уже дальше продолжает открывать другие скрипты, но уже через fsockopen
     
  11. это нормально и хорошо.
     
  12. code_x

    code_x Активный пользователь

    С нами с:
    15 май 2009
    Сообщения:
    7
    Симпатии:
    0
    А можно ли через fopen прочитать файл с фтп, при чем несколько килобайт этого файла? Например заголовок mp3 файла, для определения тегов.
     
  13. antonn

    antonn Активный пользователь

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    Для работы с ftp есть специальные команды.
    Хотя возможно fopen обучен этому.

    кстати, ID3v1 находится в конце файла-128 байт. ID3v2 - в начале.
     
  14. code_x

    code_x Активный пользователь

    С нами с:
    15 май 2009
    Сообщения:
    7
    Симпатии:
    0
    ..извиняюсь, дополняю свой предыдущий вопрос :)
    Дело в том, что при таком коде:
    PHP:
    1.  
    2. $FILE_open = fopen("ftp://localhost/Nilsson - Everybody's Talking.mp3", "r");
    3.  
    возвращается такая ошибка: ... failed to open stream: No error in ...

    Меняем аттрибут на "r+" - failed to open stream: FTP does not support simultaneous read/write connections.

    В php.ini:
    Registered PHP Streams: php, file, data, http, ftp, compress.zlib
    allow_url_fopen - On

    Может попробывать через ftps или вообще по другому реализовать чтение файла, и может ли это зависить от фтп сервера? ...
     
  15. r+ это не чтение. о чем тебе и написано.
     
  16. code_x

    code_x Активный пользователь

    С нами с:
    15 май 2009
    Сообщения:
    7
    Симпатии:
    0
    А что это за ошибка такая? - failed to open stream: No error :) ... Ошибка в том, что НЕТ ошибки! )))

    Возможо, что это связано с версией PHP 5.2.3 ? ...
     
  17. antonn

    antonn Активный пользователь

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    ошибка открытия потока данных. "no error" - это описание ошибки отсылаемое сервером. Он послал код, но не послал описание. Через ftp-функции этот файл открывается?
     
  18. code_x

    code_x Активный пользователь

    С нами с:
    15 май 2009
    Сообщения:
    7
    Симпатии:
    0
    Через ftp-функции файл открывается.

    Посмотрел лог фтп-сервера, оказывается происходит следующяя вещь. Когда идет обработка fopen с именем файла "ftp://..", фтп сервер сбрасывает ранее созданое соединение, и соединяется уже под anonymous с каким то паролем. Думаю что вся проблема в этом. И...да, чуть позже я все понял, и уже сам ответил на свой вопрос )))
    Вместо:
    PHP:
    1.  
    2. $FILE_open = fopen("ftp://localhost/EARTH, WIND & FIRE - Side By Side.mp3", "r");
    3.  
    надо писать так:
    PHP:
    1.  
    2. $FILE_open = fopen("ftp://[b]admin:pass[/b]@localhost/EARTH, WIND & FIRE - Side By Side.mp3", "r");
    3.  
    Потому что fopen не использует дескриптор соединения фтп :)
    Всем спасибо, что поддерживали ;)