推荐应用
在新浪云商店安装Discuz的几个注意点
发布于 2015-07-29
虽然说云商店与SAE相比,没有禁止本地写,但是在实际使用中发现还是有不少需要修改的地方。。。在这做个笔记,防止自己忘了,也方便后来人。。。
以下说明皆以Discuz!X2.5为准。文章不定期更新。。。
现象:无法在线安装应用和插件,会卡死在安装应用中。最终导致502错误。
原因分析:云商店禁止了flock函数
解决方案:删除相关的代码即可。
source/function/function_cloudsaddons.php(SVN VERSION:30741)
将以下代码删除
现象:主题分表时无法更新板块存档
原因分析:云商店(SAE)禁止一次性执行大数据量的操作
解决方案:在pre_forum_thread表(以及其他存档表)上添加一个联合索引:fid和replies。
现象:开启memcache后出现502错误
原因分析:单独写了一个文件,尝试memcache相关操作,却一切正常,于是挨个打印日志,发现是在getMulti这个函数上出现错误,怀疑是因为单次取出的数据太大所导致的,于是改写了dz中的memcache连接文件
解决方案:替换DZ自身的memory_driver_memcache.php即可
以下说明皆以Discuz!X2.5为准。文章不定期更新。。。
现象:无法在线安装应用和插件,会卡死在安装应用中。最终导致502错误。
原因分析:云商店禁止了flock函数
解决方案:删除相关的代码即可。
source/function/function_cloudsaddons.php(SVN VERSION:30741)
将以下代码删除
do {
$canRead = flock($fp, LOCK_SH);
if(!$canRead) {
usleep(round(rand(0, 100) * 1000));
}
} while ((!$canRead) && ((microtime() - $startTime) < 1000));
if(!$canRead) {
cpmsg('cloudaddons_file_read_error', '', 'error');
}
flock($fp, LOCK_UN);
do {
$canWrite = flock($fp, LOCK_EX);
if(!$canWrite) {
usleep(round(rand(0, 100) * 1000));
}
} while ((!$canWrite) && ((microtime() - $startTime) < 1000));
if(!$canWrite) {
cpmsg('cloudaddons_file_write_error', '', 'error');
}
flock($fp, LOCK_UN);
现象:主题分表时无法更新板块存档
原因分析:云商店(SAE)禁止一次性执行大数据量的操作
解决方案:在pre_forum_thread表(以及其他存档表)上添加一个联合索引:fid和replies。
现象:开启memcache后出现502错误
原因分析:单独写了一个文件,尝试memcache相关操作,却一切正常,于是挨个打印日志,发现是在getMulti这个函数上出现错误,怀疑是因为单次取出的数据太大所导致的,于是改写了dz中的memcache连接文件
解决方案:替换DZ自身的memory_driver_memcache.php即可
obj = memcache_init();
$this->enable = $this->obj !== false;
}
public function get($key) {
return $this->obj->get($key);
}
public function getMulti($keys) {
$ret = array();
foreach($keys as $key){
$ret[$key] = $this->get($key);
}
return $ret;
}
public function set($key, $value, $ttl = 0) {
return $this->obj->set($key, $value, MEMCACHE_COMPRESSED, $ttl);
}
public function rm($key) {
return $this->obj->delete($key);
}
public function clear() {
return $this->obj->flush();
}
public function inc($key, $step = 1) {
return $this->obj->increment($key, $step);
}
public function dec($key, $step = 1) {
return $this->obj->decrement($key, $step);
}
}
?>