我正在尝试制作一个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_check_store失败,因为错误日志中充斥着"无法存储搜索缓存!"。我读到zend_shm_check_store可以存储任何可以序列化的数组——我如何判断我的数据是序列化的还是可以序列化的?是否存在其他潜在原因?我确实制作了一个只存储字符串的测试页面,这是成功的,所以我知道缓存是打开的
已解决:缓存大小对于数组来说太小-增加了缓存大小,运行良好。很抱歉给你添麻烦。