0

一段时间以来,我一直在使用 GAE 或 Google App Engine for PHP,并使用基本的 cloudSQL 从中读取数据。由于已经有几个月了,为了优化它,我想减少表单中自动填写用于从表中读取名称的读取次数。事实上,它高达每天 80k,这对于一个简单的表格来说是非常高的。

由于谷歌不允许我在没有存储桶的情况下写入文本文件或任何其他临时文件(我没有存储桶..为什么我们需要一个?)我想我使用了我可以拥有的缓存功能它每天刷新,然后从缓存而不是实际表中进行读取查询,从而减少读取次数。

那是我撞墙了。我是这方面的初学者,尽管有经验的专业人士可能会理解这一点

https://developers.google.com/appengine/docs/php/memcache/#PHP_PHP_memcache_implementation

我不知道它在说什么。

谁能教我或告诉我如何使用 GAE 的缓存功能?我尝试搜索“如何”,但没有找到。

我的自动完成功能看起来像这样

setAutoComplete("name", "results1", "autocomplete.php?part=");

因此,只要在键入后在表单中输入文本时,它就会调用自动完成 php。

它的 SQL 部分看起来像这样

$sql = "SELECT SUBSTRING(NAME,1,300) AS Name FROM `Table` WHERE Name LIKE '{$p}%'";
// Check Query ran sucessfully
$query = mysql_query($sql) or die("Query failed: " . mysql_error() . " Actual query: " . $query);
//Create an array with the results
$results = array();
while ($user = mysql_fetch_object($query)) {
    $results[] = $user -> Name;
    }
//using JSON to encode the array
echo json_encode($results);

希望这能够画出清晰的画面。预先感谢我和其他任何可能来这里寻找类似答案的人。

PS - 我正在阅读PHP 手册并没有太大帮助。

4

1 回答 1

1

我使用了 GAE 中支持的两个 memcache API(Memcache 和 Memcached)。这是 Memcache 代码。(我假设您的查询工作正常)

    $data = array();
    $key = 'memcahcetestkey';
    $memcache = new Memcache;
    $data = $memcache->get($key);
    if ($data === false) {
      $data = $results ;//yourQueryResult;
      $memcache->set($key, $data);
    }

然后使用检查您的内存缓存值$your_memecach_array=$memcache->get($key);

于 2013-10-09T03:56:29.867 回答