Копировать изображения между различными сайтами / хостами, используя PHP - PullRequest
0 голосов
/ 01 декабря 2011

Я планирую построить CMS-систему.

Система CMS будет находиться и полностью администрироваться по адресу: www.mycompany.com/customer

Окончательный сайт будет расположен по адресу: www.customer.com

Мне нужно выяснить, как лучше всего копировать файлы (например, изображения) от: www.mycompany.com/customer/media на: www.customer.com/media

Примечание: CMS и страница клиента будут расположены на разных хостах. И я хочу построить эту функцию с помощью PHP.

Некоторые мысли:

Оптимальным решением было бы автоматическое клонирование двух каталогов независимо от того, как изображения загружаются или обновляются. Мейби, если есть способ обнаружить изменения на www.mycompany.com/customer/media, то www.customer.com/media может быть уведомлен об этом и отправить запрос на обновление изображения.

Желательно также, чтобы к изображениям можно было обращаться только с www.mycompany.com/customer/media, если они подключены к CMS: S

Любые советы?

Ответы [ 3 ]

1 голос
/ 01 декабря 2011

Вы не должны использовать FTP (небезопасный) или PHP для репликации,
вместо этого попробуйте rsync: -

Что такое rsync?
http://en.wikipedia.org/wiki/Rsync

rsync - это программное приложение и сетевой протокол для Unix-подобных систем и систем Windows, которые синхронизируют файлы и каталоги из одного места в другое, минимизируя передачу данных с использованием дельта-кодирования, когда это необходимо.Важной особенностью rsync, не встречающейся в большинстве подобных программ / протоколов, является то, что зеркалирование происходит только с одной передачей в каждом направлении.rsync может копировать или отображать содержимое каталога и копировать файлы, при необходимости используя сжатие и рекурсию.

Другими словами, предназначен для зеркального отображения или репликации (является отраслевым стандартом)

В общем,

  1. установка открытого ключа, чтобы позволить исходному серверу иметь возможность ssh подключиться к целевому серверу
  2. настройка cronjob на исходном сервере для выполнения rsync

Что делает cronjob?
В двух словах, он должен rsync выбранной исходной директории на сервер назначения,
быстрый пример: -

* * * * * rsync -avz /home/www.mycompany.com/www $HOST:/home/www.customer.com/www
                     ^ source server directory   ^ destination server, 
                                                   and directory

Однако rsync слишкомТрудно описать в нескольких предложениях, вы можете посмотреть: - http://www.cyberciti.biz/tips/linux-use-rsync-transfer-mirror-files-directories.html (для начала)

Другие возможности - использовать программное обеспечение для управления версиями, например -:

  1. git
  2. svn

Или используйте CDN (как упомянул @Amir Raminfar), который сам по себе уже является полным решением для распространения файлов.

0 голосов
/ 01 декабря 2011

Вы можете создать БД для www.mycompany.com.Но хост должен разрешать удаленный доступ к БД.Создайте crontab для customer.com, который будет проверять новые записи в удаленной БД.Этот скрипт может быть разрешен для зарегистрированных пользователей.

Вам следует создать htaccess для папки изображений www.mycompany.com.Чтобы разрешить доступ от себя и customer.com для загрузки (скажем, копирования) изображений.

Таким образом, все зарегистрированные пользователи могут загрузить любое изображение.Это может быть неправильно для вас.

Если вам нужно ограничить доступ для каждого изображения, вам следует хранить изображения в БД и генерировать зашифрованные URL для каждого изображения и запроса.В этом случае вы должны использовать удаленную базу данных или службу SOAP для получения изображений.

0 голосов
/ 01 декабря 2011

Просто позвоните по ftp или по scp с mycompany.com на customer.com и загрузите файл.

В качестве альтернативы, вы можете использовать CDN , что, вероятно, немного сложнее, но даст оптимальное решение и отличную производительность.Вы можете загрузить их на общий сервер и получить с сайта customer.com информацию об изображениях.Это дает вам преимущество для параллельной загрузки ресурсов.

Наконец, вы можете запустить какой-нибудь веб-сервис на customer.com, который может принимать загрузки.

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

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