Tôi đang làm việc trên một ứng dụng web đang cố gắng kết nối với cơ sở dữ liệu MongoDB từ PHP. Trong 90% of the page nạp tất cả mọi thứ hoạt động tốt, nhưng trong 10% còn lại nó ném ngoại lệ sau khi tôi cố gắng cập nhật một bộ sưu tập: MãPHP + MongoDB: Ngoại lệ không mong muốn 'MongoCursorException' với thông báo 'Không có tệp hoặc thư mục'
Fatal error: Uncaught exception 'MongoCursorException' with message 'No such file or directory' in D:\webDev\webSites\str\dev3\_global_classes\User.php:40
Stack trace:
#0 D:\webDev\webSites\str\dev3\_global_classes\User.php(40):
MongoCollection->update(Array, Array, Array)
#1 D:\webDev\webSites\str\dev3\_init\_init.php(8):
User->__construct(NULL)
#2 D:\webDev\webSites\str\dev3\index.php(3):
include('D:\webDev\webSi...')
#3 {main} thrown in D:\webDev\webSites\str\dev3\_global_classes\User.php on line 40
PHP:
public function __construct($SESSIONID = null) {
User::$_users_collection = Main::$_mongo->selectCollection("users");
...
$query = array('session_id' => session_id());
$expiry = time() + Main::$_lifetime;
$data = array(
'session_id' => session_id(),
'expiry' => (string)$expiry,
'ip' => $_SERVER['REMOTE_ADDR']
);
$options = array(
'upsert' => true,
'safe' => true
);
try {
User::$_users_collection->update($query, array('$set' => $data), $options);
} catch (Exception $e) {
throw $e;
}
...
}
phiên bản Mongo :
Wed Oct 17 10:53:48 /usr/bin/mongos db version v2.0.7, pdfile version 4.5 starting (--help for usage)
Wed Oct 17 10:53:48 git version: 875033920e8869d284f32119413543fa475227bf
Wed Oct 17 10:53:48 build info: Linux ip-10-2-29-40 2.6.21.7-2.ec2.v1.2.fc8xen #1 SMP Fri Nov 20 17:48:28 EST 2009 x86_64 BOOST_LIB_VERSION=1_41
Cụm Mongo của tôi chỉ có một phân đoạn, phiên bản php của tôi là: 5.4.4 và phiên bản trình điều khiển mongo của tôi là: 1.2.12.
Có điều gì có liên quan trong nhật ký máy chủ MongoDB không? –
Máy khách Mongo Phiên bản PECL là 1.3.6. Tôi sẽ đề nghị thử một phiên bản sau vì điều này đã được phát triển tích cực trong một thời gian. https://github.com/mongodb/mongo-php-driver/tags – methai
Bạn có thể thử lặp lại mã không? Điều đó sẽ giúp chúng tôi phân tích chi tiết vấn đề. Vui lòng sử dụng '$ e-> getCode()' trong khối catch. –