2012-03-08 55 views
0

我使用PHP和数据库蒙哥...我想用用户钥这是一个独特的蒙戈致命错误

关键。我蒙戈查询就是获得用户的详细信息:

 $obj= $mongo->user; 
     $filter = array(
      'userkey'=>$value 
     ); 
     $exist = $obj->findone($filter); 

当我执行这个查询,得到的错误是......

Fatal error: Maximum execution time of 30 seconds exceeded in line 5 

ie $ exists = $ obj-> findone($ filter);显示错误

如何解决这个问题

有人可以帮助我PLZ ...

+0

显示哪行代码导致最大执行时间?另见http://php.net/manual/en/function.set-time-limit.php – 2012-03-08 06:41:37

+0

@PatrickLorio:$ exist = $ obj-> findone($ filter); ....这一行显示错误 – Micku 2012-03-08 07:43:53

+0

而且你的MongoDB日志文件中显示了什么? – Derick 2012-03-08 09:34:14

回答

0

你能得到任何蒙戈查询工作,或只是这一次失败了?这可能与你连接数据库有关。我相信“findone()”会在一个停滞的连接上永远等待。我建议使用“find()”,并给它一个很低的超时时间,比如100ms。这可能有帮助。

$ cursor = $ collection-> find($ query,$ fields) - > timeout(100); $ record = $ cursor-> getNext();

很明显,你会想把它包装在try/catch块中来捕获超时异常。请务必使用最新的mongo驱动程序(1.2.10或更高版本),因为早期版本的php mongo驱动程序会在连接超时时发生段错误。