繁体   English   中英

iPhone / PHP:缓存XML结果

[英]iPhone/PHP: Caching XML results

好吧,我的问题很奇怪,因为这确实没有道理。

1)我有一个PHP脚本,它带有XML和一些存储在我的MySQL数据库中的信息;

2)当我第一次使用此脚本(或任何其他脚本)时,它带给我所有更新的信息(直到那时为止,所有注册表均已插入);

3)当我再次使用此脚本(或其他任何脚本)时,无论我的数据库中有多少个新注册表,它都只带给我第一次使用该脚本时带来的注册表;

*我已经在浏览器上测试了此脚本,它可以正常工作,始终带来数据库的最新状态。

我能做什么? 谢谢。

编辑:

1)我如何称呼XML解析器:

NSString *strURL = @"localhost/scripts/bringmethexml-x5.php";
NSData *dataURL = [NSData dataWithContentsOfURL:[NSURL URLWithString:strURL]];

XMLProcessor *processor = [[XMLProcessor alloc]initProcessor];
[processor syncProcessorWithData:dataURL];
NSMutableArray *a = processor.xmlObjects;

2)我的PHP脚本:

<?php
    header("Content-type: text/xml");
    echo "<?xml version=\"1.0\" encoding=\"LATIN-1\"?>";
    echo "<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">";
    echo "<plist version=\"1.0\">";

    function getXML($sql="SELECT user FROM database.Posts"){

        $conn   = mysql_connect ("localhost", "user", "password");
        $db     = mysql_select_db("database");
        $result = mysql_query($sql, $conn);
        $column = "";
        echo "<array>";

        while($row = mysql_fetch_assoc($result)){
        $column .= "<dict>";
            foreach ($row as $key => $value){
                $column .= "<key>$key</key>";
                $column .= "<string>$value</string>";
            }
            $column .= "</dict>";
        }

        echo $column;
        echo "</array>";
        echo "</plist>";
    }       
    getXML("SELECT user as USER, msg as MESSAGE, hashtag_1 as ST1, hashtag_2 as ST2, hashtag_3 as ST3, hashtag_4 as ST4, hashtag_5 as ST5, date as DATEPOSTED, coordinate_lat as COORLAT, coordinate_lon as COORLON FROM database.Posts;");
    mysql_close();
?>

3)我的XML如何发出:

<?xml version="1.0" encoding="LATIN-1"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <array>
    <dict>
        <key>(key || nome da fileira do db)</key>
            <string>(valor||object)</string>
        <key>(key || nome da fileira do db)</key>
            <string>(valor||object)</string>
    </dict>
    <dict>
        <key>(key || nome da fileira do db)</key>
            <string>(valor||object)</string>
        <key>(key || nome da fileira do db)</key>
            <string>(valor||object)</string>
    </dict>
    </array>
</plist>

4)XMLProcessor是我创建的解析器,它从NSURL获取NSData,然后将其变成一个字符串,然后我将其解析为适合NSMutableDictionary的形式,这是该类的链接:

http://www66.zippyshare.com/v/7711833/file.html

一种简单的,稍微有点怪异的解决方法是在网址中添加一个您实际上没有真正使用的随机变量。

例如http://www.yourwebsite.com/somestuff.xml?random=343453

由于网址每次都不相同,因此不会使用缓存。

您还可以通过添加锚来实现: http : //www.yourwebsite.com/somestuff.xml#623764527

这是一个自动化的功能,只需将其应用于您的nsstring URLS

yourURL = [self getUniqueURL:yourURL];


-(NSString*)getUniqueURL:(NSString*)originalURL
{

    NSInteger random = (arc4random() % 100000000) + 1;

    NSString* uniqueURL = [NSString stringWithFormat:@"%@#%d",originalURL,random];

    return uniqueURL;

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM