Php 如何处理Couchbase中的连接故障?
我正在使用Couchbase,使用Php 如何处理Couchbase中的连接故障?,php,couchbase,Php,Couchbase,我正在使用Couchbase,使用PHP\u Couchbase和libcouchbase对IIS7下PHP5.4 NTS的RDB结果进行短期缓存。如果将RDBSelect放在回调函数中,代码非常好,但我希望更好地理解当事情崩溃时该怎么做 所以建议我看看这个问题:。Saad的代码不会抛出异常,因为$cb从不为false。(我不知道如何理解马特关于计算错误的建议;我无法让它抛出任何错误。) 即使数据库离线,我也可以使用对象实例化;由于连接可能随时中断,代码应该检查每个操作的结果。但是libcouc
PHP\u Couchbase
和libcouchbase
对IIS7下PHP5.4 NTS的RDB结果进行短期缓存。如果将RDBSelect放在回调函数中,代码非常好,但我希望更好地理解当事情崩溃时该怎么做
所以建议我看看这个问题:。Saad的代码不会抛出异常,因为$cb
从不为false。(我不知道如何理解马特关于计算错误的建议;我无法让它抛出任何错误。)
即使数据库离线,我也可以使用对象实例化;由于连接可能随时中断,代码应该检查每个操作的结果。但是libcouchbase
似乎不愿意让失败成为一种选择
在下面的代码中(我连接到一个伪端口),它从不抛出异常,只是“警告”。(“警告:无法建立到服务器的libcouchbase连接:第4行H:\www\root\no.php中的连接失败”,“警告:第9行H:\www\root\no.php中没有到couchbase的活动连接”
)
Couchbase->add
返回一个值,但返回的值不能显示“此密钥已存在”和“服务器机房着火”之间的区别
测试操作是否成功的正确方法是什么?我需要捕捉警告吗
<?php
try {
$cb = new Couchbase("localhost:8099", "", ""); // should be port 8091
} catch (CouchbaseException $e) {
echo "Never fires, even when db down (this is OK...instantiation did work).";
};
if ($cb->add("hello","hello world")) {
echo "Called if DB up and key does not exist";
} else {
echo "Called if DB down or key exists";
}
try {
$foo = $cb->add("hello","hello world");
} catch (Exception $e) {
echo "Never fires, even when db down";
};
try {
$foo = $cb->add("hello","hello world");
} catch (CouchbaseException $e) {
echo "Never fires, even when db down";
};
print $cb->get("hello");
?>
我也试过了;没有引发异常。也许我没有打开php异常处理?(抱歉,如果我是个白痴,我不会写太多php代码。)
因为Couchbase是一个分布式冗余的nosql解决方案,所以我们不需要考虑太多的服务可用性,这一观点让我有点失望。代码总是需要知道数据何时被扔到地板上
谢谢你的建议
Rob我必须检查以确定,但我相信问题与Windows版本有点落后有关。如果我没记错的话,在早期的1.1.x系列中存在异常处理问题。从源头上建造可能是有序的。我会看看我们是否能为您提供更新版本。我们肯定认为您的应用程序中需要有可用性和应急代码来处理连接或其他错误!这是任何数据存储的标准。我将提出一些建议,看看处理连接丢失的最佳方法,顺便说一句,这是一个很好的问题。