Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 缓存外部xmlfeeds的最佳实践_Php_Xml_Caching_External - Fatal编程技术网

Php 缓存外部xmlfeeds的最佳实践

Php 缓存外部xmlfeeds的最佳实践,php,xml,caching,external,Php,Xml,Caching,External,我的frontpage上有24个外部XmlFeed显示产品。有关提要的详细信息,请参阅此stackoverflow。每个feed显示一个产品,但每次有人访问我的站点时,加载这些feed需要很长时间。订阅源每天更新一次 缓存这些提要的最佳方式是什么?我应该用mysql做些什么还是在本地保存xml文件。我不知道从哪里开始。我试过了,但运气不好 这是我使用的循环: 为了回答你的直接问题,考虑下面的伪代码: 检查是否存在包含xml内容的本地文件。类似于/home/db/tempfiles/feed\u

我的frontpage上有24个外部XmlFeed显示产品。有关提要的详细信息,请参阅此stackoverflow。每个feed显示一个产品,但每次有人访问我的站点时,加载这些feed需要很长时间。订阅源每天更新一次

缓存这些提要的最佳方式是什么?我应该用mysql做些什么还是在本地保存xml文件。我不知道从哪里开始。我试过了,但运气不好

这是我使用的循环:


为了回答你的直接问题,考虑下面的伪代码:

检查是否存在包含xml内容的本地文件。类似于/home/db/tempfiles/feed\u name\u current\u date.xml

如果使用步骤1中的构造找不到匹配的本地文件,请立即加载xml

从URL加载xml后,使用带有feed_name和current_date的名称空间结构保存内容,以便在发出新请求时,步骤1将返回本地文件


但是我很好奇,如果它是xml提要,您不想将数据存储在本地系统中吗?如何跟踪购买情况等?

谢谢你的回答,迈克,我刚刚开始学习xml以及如何使用它。我们要做的是每小时重新导入一次xml提要并缓存它。老实说,我还没有想过如何跟踪购买情况。所以我还不知道如何使用它,你能告诉我正确的方向吗?嗯,有很多选择。就我个人而言,我会编写一个解析器来逐步完成xml提要,并填充我的产品数据库。这样,当有人进行购买时,您可以使用产品id创建一个订单号,该产品id现在位于您的数据集的本地。否则很难通过缓存提要来跟踪产品,因为它们可能是暂时的。我的意思是,一旦一个产品进入你的系统,你想永远保存它,所以如果你查询旧订单,想查看产品,数据就会可用。否则你会得到孤儿身份证。是的,很抱歉我反应太晚了。我让它工作了。我使用解析器来填充我的数据库。使用cronjobs每小时重新导入一次提要所有提要都会在不同的时间每24小时更新一次。只有在有新的feedinfo时,才会更新数据库中的旧feed项。我将图像保存在本地,并在成功完成cronjob后进行更新。谢谢你的建议,迈克。
<?php
    // get xml file contents
    $xmlurl = get_post_meta( get_the_ID( ), 'plus_xmlfeed', true );
    if ( !empty( $xmlurl ) ){
    $xml = simplexml_load_file($xmlurl);
    }
    $xml->product->name = substr($xml->product->name, 0, 30).'...';
    $desc = substr($xml->product->name, 0, 50).'';
?>

    <li class="span3">
      <div class="thumbnail">
      <a href="<?php echo $xml->product->productURL ;?>">
          <center><img src="<?php echo get_template_directory_uri(); ?>/img/logos/<?php echo get_post_meta(get_the_ID( ), 'plus_logos', true); ?>.gif"/></center>
          <center><img class="mainimg" alt="" src="<?php echo $xml->product->imageURL ;?>"/></center>
        </a>
        <div class="caption">
          <h5><a href="<?php echo $xml->product->productURL ;?>"><?php echo $xml->product->name; ?></a></h5>
          <div class="maindesc half clearfix"><div class="prijs">&euro; <?php echo $xml->product->price ;?></div><strike style="color: rgb(248, 148, 6);">
            <?php
            foreach ($xml->product->additional->field as $field) {
                               switch((string) $field['name']) {
                                   case 'price_advice':
                                      echo '&euro; ' .$field. '';
                                      break;
                                   case 'fromPrice':
                                      echo '&euro; ' .$field. '';
                                      break;
                                   case 'oldPrice':
                                      echo '&euro; ' .$field. '';
                                      break;
                                   case 'from_price':
                                      echo '&euro; ' .$field. '';
                                      break;
                                   case 'adviesprijs':
                                      echo '&euro; ' .$field. '';
                                      break;
                                   case 'advice_price':
                                      echo '&euro; ' .$field. '';
                                      break;
                                   case 'Fromprice':
                                      echo '&euro; ' .$field. '';
                                      break;
                                   case 'recommendedPrice':
                                      echo '&euro; ' .$field. '';
                                      break;
                                    }
                                }
            ?>
            </strike>
          <p style="color: rgb(153, 153, 153);"><?php echo $desc; ?></p></div>
          <div class="btn-group bot"><div class="pull-right"> </div><a class="btn btn-primary" href="<?php echo $xml->product->productURL ;?>">Kopen</a> <a class="btn" href="#<?php echo 'modal_'.get_the_ID();?>">Info</a></div>
        </div>
      </div>

    </li>
<?php /*end loop*/ ?>