使用我的 wordpress functions.php 文件检查所显示的每张图片是否已启动,正在运行或已关闭。我想我想要做的就是将这个函数代码(下面)分解为两个。
功能1 :检查mirror1.com是否已启动(而不是检查循环中的每个图像)。根据mirror1.com的http状态插入if / then语句。 (如果mirror1.com关闭,则使用mirror2.com ) - 将其传递到$ mirror_website
功能2:只需传入$ mirror_website ..(前端有 <img src="<?php echo $mirror_website; ?>/image.png">
)
下面的代码可以使用,但它会检查每个简单的图像并减慢网站的速度。
function amazons3acctreplaceto() {
$url = 'http://www.mirror1.com';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_exec($ch);
$retcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if (200==$retcode) {
$as3replaceto = "www.mirror1.com"; // All's well
} else {
$as3replaceto = "www.mirror2.com"; // not so much
}
答案 0 :(得分:1)
一个简单的解决方案可能是使用TTL缓存结果(例如,在APC或内存缓存中),因此如果网站因任何可能性而上升或下降,则无需计算。
例如。以下是使用APC缓存站点状态结果2分钟的示例:
function amazons3acctreplaceto() {
$as3replaceto = FALSE;
if (function_exists('apc_fetch')) {
$as3replaceto = apc_fetch('as3replaceto');
}
if ($as3replaceto === FALSE) {
$url = 'http://www.mirror1.com';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_exec($ch);
$retcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if (200==$retcode) {
$as3replaceto = "www.mirror1.com"; // All's well
} else {
$as3replaceto = "www.mirror2.com"; // not so much
}
if (function_exists('apc_store')) {
apc_store('as3replaceto', $as3replaceto, 120); //Store status for 2 minutes
}
}