快速查看网站是否已关闭或更快?

时间:2013-01-20 18:41:34

标签: wordpress

使用我的 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
    }

1 个答案:

答案 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
    }
  }