очевидно, что мы не можем просто доставить этот путь к изображению на сервер А и в конечном итоге к конечному пользователю.
Я думаю, что это единственный путь, но вам не нужно физически сохранять файлы на сервере A. В PHP: если сервер A может общаться с сервером B на уровне файловой системы (то есть через общий сетевой ресурс), сервер A может получить данные с сервера B и передать их пользователю:
header("Content-type: image/jpeg"); // Make sure you send the right headers
$file = fopen("/path/to/server/b/huge/image.jpg", "r");
fpassthru($file); // or deliver chunks using fread()
fclose($file);
Если есть только внутреннее http-соединение, вы изменили бы вторую строку на что-то вроде
$file = fopen("http://serverb.local/huge/image.jpg", "r");
Если этот метод слишком медленный для вас или не удобен в настройке, вам придется использовать (S) FTP, SCP или что-то подобное. FTP доступен на PHP изначально ; другие протоколы, вероятно, проще всего вызвать из скрипта PHP, используя exec()
.
В зависимости от вашего сценария и частоты использования может потребоваться использовать какое-либо кэширование на сервере A, чтобы эту операцию не приходилось повторять каждый раз.
Если ваши серверы размещены в центре обработки данных, убедитесь, что трафик между ними бесплатный или не слишком дорогой.
Это самый простой способ, с помощью которого я могу позволить пользователю «увидеть» изображение без засорения сервера A.