2010-07-03 3 views
0

Я написал плагин WordPress, и я пытаюсь найти лучший способ проверить программу на наличие обновлений на моем сервере и загрузить их автоматически по запросу пользователя. Это будет в основном использоваться для загрузки дополнительных функций, которые я не хочу помещать в репозиторий WordPress, поскольку они не имеют лицензии GNU.Каков наилучший способ загрузить внешний файл на сервер с помощью программы

Я закодировал программу для проверки обновлений, я не уверен, что это часть загрузки.

Должен ли я использовать file_get_contents(), а затем fwrite() для записи результатов в каталог? Я уверен, что это способ сделать это, но я ищу самый безопасный способ перехода между серверами, потому что плагин используется тысячами людей на разных установках, хотя они все являются PHP, и большинство из них PHP5 +. Я боюсь, что у некоторых хостов может быть какая-то безопасность, которая мешает мне это делать. Будет ли cURL лучшим вариантом?

спасибо.

ответ

1

не изобретать колесо! Для этой цели WordPress имеет HTTP API!

Отъезд в Codex для предметов первой необходимости - http://codex.wordpress.org/HTTP_API

Вы также можете просмотреть источник в wp-includes/class-http.php

+0

Вы правы, я нашел эти функции вскоре после публикации этого вопроса. WP имеет ряд функций, доступных для загрузки заголовков, файлов, их извлечения и т. Д. К сожалению, на нем не так много документации, кроме записей PHPDoc в файлах. – Andy

3

Вы можете использовать file_put_contents, что намного эффективнее, чем загружать все в память с помощью file_get_contents, а затем звонить по телефону fwrite. Второй параметр принимает ресурс потока, который можно открыть с помощью fopen или (если вы хотите обойти ограничения allow_url_fopen, fsockopen).

Поэтому, самый простой вариант, который использует только основные функции (без завитка расширения и т.д.) и работает в почти Эври конфигурации является:

  • Открыть транспортный поток с fsockopen
  • Отправить заголовки HTTP вручную fwrite
  • Написать ответ с file_put_contents
+0

Выглядит хорошо, я буду тестировать его и разместить здесь результаты. – Andy

+0

Если ваш загружаемый файл каким-то образом защищен паролем (базовый HTTP-аутентификатор, вход на основе форм и т. Д.), Вам придется использовать CURL. 'file_get_contents()' очень простой и не сможет обрабатывать какие-либо аутентификации/входа. –

+0

@Marc http-wrapper (который будет использовать file_get_contents) может выполнять базовую аутентификацию из коробки, и вы можете выполнить проверку подлинности дайджеста вручную (предоставлено с некоторыми усилиями), если вам нужно. Регистрация на основе форм также может обрабатываться оболочкой http, поскольку вы можете отправлять произвольные данные и произвольные заголовки, создавая соответствующий контекст. См. Http://www.php.net/manual/en/context.http.php – Artefacto

 Смежные вопросы

  • Нет связанных вопросов^_^