2

wordpress functions.phpファイルを使用して、表示されているすべての画像が稼働中か停止中かを確認します。私がやりたいことは、この関数コード (以下) を 2 つに分割することだと思います。

関数 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 に答える