【发布时间】:2016-12-15 06:49:27
【问题描述】:
我有很多网站,我在其中使用了很多包含。我包含的那些文件位于外部包含服务器上。我的问题是:我想让这些文件变得多余,所以如果包含服务器出现故障,它们会从我的第二个包含服务器中获取。 在每个网站上手动执行此操作将花费太长时间,所以我想知道是否有办法例如在服务器端执行此操作(因此,如果服务器关闭,它会转发到另一台服务器)。
以下是我通常如何包含文件的示例:
<?php
$url = 'http://myincludeserver.com/folder/fileiwanttoinclude.php';
function get_data($url)
{
$ch = curl_init($url);
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $_REQUEST);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
$returned_content = get_data($url);
if(!empty($returned_content))
{
echo $returned_content;
}
else
{
include('includes/local_error_message.php');
};
?>
感谢阅读!
【问题讨论】:
-
只检查包含是否成功,如果不包含另一个。
-
使用 Jquery-ajax 并使用
$.ajax({ //... success: function(data, textStatus, xhr) { console.log(xhr.status); }, complete: function(xhr, textStatus) { console.log(xhr.status); } });获取响应代码,然后您就知道服务器是否出现故障 -
感谢您的回答,但这是最简单的部分!如果我这样做,我必须在我使用的每个包含上都这样做(比如 1000+)。我正在寻找一种方法来做到这一点,这样我就不必编辑每个网站上的每个文件
-
@jogoe 你是说
get_data函数被复制了1000+次吗? -
您并没有真正通过不安全的 http 连接传输您想要包含/执行的 代码,对吗?老实说,这是使用来自不同位置的代码的可怕方式,通过网络加载文件的开销非常高,而且也很危险。使用 NFS 来托管公共文件,看在上帝的份上,不要为此使用互联网!
标签: php function server include forward