我一直在使用GAE或Google App Engine for PHP,并使用基本的cloudSQL从中读取数据。由于已经过了几个月并且为了优化它,我想减少表单中用于从表中读取名称的自动填充的读取次数。截至不是每天高达80k,这对于简单的形式来说是非常高的。
由于Google不允许我在没有存储桶的情况下写入文本文件或任何其他临时文件(我没有存储桶..为此我们为什么需要存储空间?)我想我使用缓存功能,我可以让它每天刷新,然后从缓存而不是实际的表中执行读取查询,从而减少读取次数。
那是我跑到墙上的。我是初学者,虽然经验丰富的专业人士可能会理解这一点https://developers.google.com/appengine/docs/php/memcache/#PHP_PHP_memcache_implementation
我不知道它说的是什么。
任何人都可以教我或告诉我如何使用GAE的缓存功能吗?我试着搜索“如何”,但没有找到。
我的自动完成功能如下所示
setAutoComplete("name", "results1", "autocomplete.php?part=");
所以只要在一个keyup之后在表单中输入文本,它就会调用autocomplete 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);
希望这能够画出清晰的图片。提前感谢我和其他任何可能来这里寻找类似答案的人。
P.S - 我正在阅读PHP Manual并没有太多帮助。
答案 0 :(得分: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);