我使用PHP mongoclient類與mongodb遠程主機連接。MongoClient PHP sript永遠運行
我沒有寫什麼特別簡單但簡單的連接代碼。
$connection_url = "mongodb://{$dbuser}:{$dbpass}@{$dburl}:{$dbport}/{$dbname}";
$this->m = new MongoClient($connection);
它連接到MongoDB的,但一段時間後,我的應用程序掛起,通過掛起我的意思是PHP sript一直運行下去,沒有任何反應,最後Apache和我的服務器崩潰。我需要重新啓動服務器才能重新啓動它。
爲什麼PHP腳本永遠運行並且mongoserver沒有響應。我的max_execution_time
設爲30秒。
MongoClient版本1.4.5
更新:
正如所解釋的here 默認的連接插座超時的MongoDB是從不超時,我想,可能是PHP MongoClient正在等待永遠如果套接字從MongoServer端關閉。
爲了確保我已經爲mongoclient不等待5秒鐘以上的選項,如果關閉套接字,像下面
$connection_url = "mongodb://{$dbuser}:{$dbpass}@{$dburl}:{$dbport}/{$dbname}";
$options = array('connectTimeoutMS' =>5000 , 'socketTimeoutMS' => 5000);
$this->m = new MongoClient($connection, $options);
但是,這仍然掛
這裏是短蒙戈日誌
2:4:發現連接 ,某; - ; DBNAME /用戶/ fd6da21ee7cf37731eb88e250d4a05d6; 1957(尋找 爲,某; - ; DBNAME /用戶名/ fd6da21 ee7cf37731eb88e250d4a05d6; 1957) 2:2:mongo_get_read_write_connection:找到一個獨立的連接
2:4:發現連接 主機; - ; DBNAME /用戶名/ fd6da21ee7cf37731eb88e250d4a05d6; 1957(尋找 爲主機名; - ; dnname /用戶/ fd6da21ee7cf37731eb88e250d4a05d6 ; 1957)
2:2:is_ping:查驗 主機名; - ; DBNAME /用戶名/ fd6da21ee7cf37731eb88e250d4a05d6; 1957
沒有日誌 'is_ping' 之後。這意味着我的腳本在這裏掛起。
更新:
這裏是進程正在使用和運行的時候它掛
ps aux | sort -rk 3,3 | head -n 20
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
www-data 32612 0.0 1.1 108372 5604 ? S 11:05 0:00 /usr/sbin/apache2 -k start
www-data 32390 0.0 1.1 108372 5604 ? S 11:04 0:00 /usr/sbin/apache2 -k start
www-data 32389 0.0 1.4 109192 7348 ? S 11:00 0:00 /usr/sbin/apache2 -k start
www-data 32388 0.0 1.4 109192 7376 ? S 11:00 0:00 /usr/sbin/apache2 -k start
www-data 32387 0.0 1.4 109192 7376 ? S 11:00 0:00 /usr/sbin/apache2 -k start
www-data 32386 0.0 1.2 108412 6100 ? S 11:00 0:00 /usr/sbin/apache2 -k start
www-data 32385 0.0 1.8 111692 9432 ? S 11:00 0:00 /usr/sbin/apache2 -k start
www-data 31833 0.0 1.5 109216 7548 ? S 02:35 0:00 /usr/sbin/apache2 -k start
www-data 31173 0.0 1.5 108824 7872 ? S Mar02 0:00 /usr/sbin/apache2 -k start
www-data 15538 0.0 1.5 109216 7664 ? S Mar02 0:00 /usr/sbin/apache2 -k start
www-data 15536 0.0 1.4 109200 7496 ? S Mar02 0:00 /usr/sbin/apache2 -k start
www-data 15535 0.0 1.6 110904 8444 ? S Mar02 0:00 /usr/sbin/apache2 -k start
www-data 15534 0.0 1.3 108684 6536 ? S Mar02 0:00 /usr/sbin/apache2 -k start
whoopsie 847 0.0 0.5 187668 2676 ? Ssl Feb24 0:00 whoopsie
syslog 370 0.0 0.6 249676 3060 ? Sl Feb24 0:31 rsyslogd -c5
root 984 0.0 0.1 15792 908 tty1 Ss+ Feb24 0:00 /sbin/getty -8 38400 tty1
root 946 0.0 2.0 108348 10120 ? Ss Feb24 0:32 /usr/sbin/apache2 -k start
root 9 0.0 0.0 0 0 ? S Feb24 0:00 [rcu_bh]
root 879 0.0 0.0 0 0 ? S< Feb24 0:00 [kvm-irqfd-clean]
我也收到這個錯誤,我使用SSL,但我不認爲這個問題是SSL - 它只是套接字變成陳舊。如果我找到答案,我一定會在這裏爲你發佈。 – Ross