Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 具有多个服务器的图像托管_Php_File Upload_Load Balancing - Fatal编程技术网

Php 具有多个服务器的图像托管

Php 具有多个服务器的图像托管,php,file-upload,load-balancing,Php,File Upload,Load Balancing,我正在开发一个图像主机,希望将图像从我的web内容上传到一个单独的服务器,例如:http://i1.mysite.com而不是http://mysite.com/uploads。但是我在想怎么做时遇到了一些困难 假设我有这个表格: <form action="http://mysite.com/upload" method="post" accept-charset="utf-8" enctype="multipart/form-data"> <input type="

我正在开发一个图像主机,希望将图像从我的web内容上传到一个单独的服务器,例如:
http://i1.mysite.com
而不是
http://mysite.com/uploads
。但是我在想怎么做时遇到了一些困难

假设我有这个表格:

<form action="http://mysite.com/upload" method="post" accept-charset="utf-8" enctype="multipart/form-data">
    <input type="file" name="image" id="file_upload" />
    <input type="submit" value="Upload" id="upload_submit" />
</form>
这会将图像文件发送到另一台服务器,但当图像上传完成后,我会被重定向到
http:/i1.mysite.com/upload


有没有人有这方面的经验,可以推荐一个行动方案?谢谢大家!

不要上传到图像服务器。此类特定于内容的服务器应该针对提供内容进行优化,而不必处理消费内容


让上传表单发送到主站点的服务器。然后,您可以使用其他协议将上载的文件传输到图像服务器。rsynch、scp等。。。这样,您就可以将所有“控制”代码放在一个位置,而不必担心在多个服务器之间同步数据库等问题—所有数据都保存在主服务器上,而图像服务器只是被动地输出图像数据。

我建议将这两种想法分离开来。首先,将映像上载到服务器,并在单独的过程中(可能是一个预定的cron)将映像移动到其他服务器。您可能不希望用户等待两次上载完成。

正如其他人所说,您尝试的操作不是最佳的。如果您真的想继续这样做,我建议将表单提交到一个PHP脚本,该脚本将处理表单并将文件放置在需要的位置,然后将任何必要的信息保存到数据库中。您需要评估从一台服务器到另一台服务器的数据传输的最佳协议。您可能最终会使用Curl,您可以了解它,还可以将图像上载到图像主机,然后将其重定向回您的网站。一种方法是在表单中添加隐藏的“成功”和“失败”URL输入:

<form action="http://i1.mysite.com/upload" method="post" accept-charset="utf-8" enctype="multipart/form-data">
    <input type="file" name="image" id="file_upload" />
    <input type="submit" value="Upload" id="upload_submit" />
    <input type="hidden" name="success" value="http://mysite.com/success" />
    <input type="hidden" name="failure" value="http://mysite.com/failure" />
</form>

成功上载后,图像主机上的上载脚本将重定向到提供的URL:

<?php
    .. handle uploaded file ..

    if ($success) {
        header ('Location: ' . $_REQUEST ['success']) ;
    }
    else {
        header ('Location: ' . $_REQUEST ['error'] . '?message=' . $message) ;
    }

?>

我应该补充一点,您将有一个表单将所有内容提交给PHP脚本,然后将所有内容拆分出来。
<?php
    .. handle uploaded file ..

    if ($success) {
        header ('Location: ' . $_REQUEST ['success']) ;
    }
    else {
        header ('Location: ' . $_REQUEST ['error'] . '?message=' . $message) ;
    }

?>