我有一个PHP方法,它从memcache或数据库中检索数据(如果它尚不可用)。 有时必须从数据库加载数据以更新内存缓存,例如,如果发生了某些变化。
public function get_likes_per_user($u_id, $force_db = false) {
if ($this->memcache) {
$u_id = intval($u_id);
$key = 'liked_news_' . $u_id;
$res = $this->memcache->get($key);
if ($res != '') {
$res = unserialize($res);
}
// This line causes a syntax error for no obvious reason
if(!is_array($res) || $force_db){
$res = array();
$sql = "...";
$uu_query = $this->datenbank->query_result($sql);
while ($row = $uu_query->fetch_row()) {
$res[] = $row['uu_id'];
}
$this->memcache->set($key, serialize($res), 0, 3600);
}
return $res;
} else {
throw new Exception("Kein Memcache Objekt!");
}
}
出于某种原因,我不明白php决定为if语句抛出语法错误,该语句决定是否从数据库重新加载数据。
我为这个陈述尝试了不同的符号,但我无法弄清楚导致错误的原因。
有没有人遇到过类似的东西?
PHP版本5.4
更新
我找到了错误的原因。我正在使用mac并写一个管道charakter你必须按alt+7
。如果按alt+spacebar
,Mac OS X将插入一个不间断的空格,这对PHP无效。所以我的错误是在输入OR语句的两个管道后保持alt压力。