лучший метод для передачи больших файлов через http (s) с использованием PHP (POST), вызываемый через shell - PullRequest
1 голос
/ 16 августа 2010

Я хочу настроить автоматическое резервное копирование через PHP, чтобы с помощью http / s я мог «отправить» запрос zip-файла на другой сервер и отправить поверх большого файла .zip, в основном я хочу сделать резервную копию всего сайта (иего база данных) и cron перидокально передает файл через http / s.что-то вроде

wget http://www.thissite.com/cron_backup.php?dest=www.othersite.com&file=backup.zip

Соответствующая безопасность аутентификации может быть добавлена ​​после слов ....

Я предпочитаю http / s, потому что этот другой сайт имеет ограниченное использование ftp и находится в окне Windows.Таким образом, я считаю, что надежный способ связи с ним - через http / s .. на другом конце будет иметь соответствующий php-скрипт, который будет хранить файл.

этот процесс должен быть полностью программным (т.е. Flashзагрузчики не будут работать, так как для этого нужен браузер, этот скрипт будет запускаться из сеанса оболочки) //

Существуют ли какие-либо обобщенные библиотеки PHP или функции, которые помогают с такими вещами?Я знаю о проблемах тайм-аута сценария PHP, но обычно я могу изменить php.ini, чтобы минимизировать это.

Ответы [ 2 ]

0 голосов
/ 16 августа 2010

Если это вообще возможно, я бы держался подальше от больших передач по HTTP. FTP тоже далек от идеала - но по совершенно другим причинам.

Да, это можно сделать через ftp, http и https, используя curl, но это не решает никаких проблем. HTTP оптимизирован для отправки относительно небольших файлов за относительно короткие промежутки времени - когда вы отойдете от этого, вы в конечном итоге подорвете большую часть оптимизации, применяемой к веб-серверам (например, если у вас есть параметр для maxrequestsperchild, вы можете быть искусственно продление срока службы процессов, которые должны были быть остановлены, и существует взаимодействие между настройками LimitRequest * и max_file_size, не говоря уже о различных таймаутах и ​​других настройках limit в Apache).

Гораздо более разумным решением является использование rsync поверх ssh для резервного копирования контента / кода и соответствующий метод репликации базы данных для используемой вами СУБД, например MySQL репликация.

0 голосов
/ 16 августа 2010

Лично я бы не использовал wget, а просто запускал бы для этого непосредственно из оболочки.

Ваш php-скрипт будет вызываться из cron следующим образом: / usr / local / bin / php / your / script/location.php аргументы здесь, если вы хотите

Таким образом, вам не нужно беспокоиться о еще одной программе для обработки вещей (wget), если ваши настройки одинаковы при каждом запуске, просто поместите их в конфигурациюфайл или непосредственно в скрипт PHP.

Тайм-аут может быть обработан этим, заставляет скрипт PHP работать неограниченное количество времени.

set_time_limit(0);

Не уверен, какие библиотеки вы используете, ноПосмотрите на CRUL, чтобы выполнить POST, он должен работать нормально.

Я думаю, что самые большие проблемы, которые могут возникнуть, будут связаны с большей серьезностью и меньшим количеством PHP / сценариев, т.е. убедитесь, что у вас есть пропускная способность, ичто ваш PHP-скрипт МОЖЕТ подключиться к внешнему серверу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...