如何在GAE php中使用memcache或memcached?

时间:2013-10-07 11:14:28

标签: php google-app-engine caching memcached

我一直在使用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并没有太多帮助。

1 个答案:

答案 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);

检查您的memcache值