2

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

1 回答 1

1

一个简单的解决方案可能是使用 TTL 缓存结果(例如,在 APC 或 memcache 中),这样您就无需为每种可能性确定站点是打开还是关闭。

例如。这是一个使用 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
    }
  }
于 2013-01-20T18:44:55.550 回答