簡體   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