我正在尝试制作一个 ajax 自动完成搜索框,它当然使用 SQL,最少 3 个字符,并且已经在数据库中设置并索引了相关字段的 SQL 视图。搜索时 CPU 仍然会出现峰值,这是我预期的,因为它正在为每个字符运行查询。我想使用 Zend shm 缓存来加快结果并减少 CPU 使用率。结果存储在一个数组中,该数组将像这样被缓存:
while($row = db2_fetch_row($stmt)) {
$fSearch[trim($row[0]).trim($row[1])] = array(/*array built here*/);
}
if (zend_shm_cache_store('fSearch', $fSearch, 10 * 60) === false) {
error_log('Failed to store search cache!');
}
当然,数组中包含实际数据而不是注释,为了简单起见,我只是缩短了代码。第 0 行和第 1 行形成 PK,并且经过测试可以正常工作。是 zend_shm_cache_store 失败,因为错误日志被“无法存储搜索缓存!”淹没。我读到 zend_shm_cache_store 可以存储任何可以序列化的数组 - 我如何判断我的数据是序列化的还是可以序列化的?还有其他潜在原因吗?我确实制作了一个只存储一个字符串并且成功的测试页面,所以我知道缓存已打开。