我想为我的网页创建搜索引擎,但在服务器上编制索引时会崩溃并出现错误:
Warning: opendir(/admin/lucene/) [function.opendir]: failed to open dir: Too many open files in /admin/includes/Zend/Search/Lucene/Storage/Directory/Filesystem.php on line 159
Warning: readdir(): supplied argument is not a valid Directory resource in /admin/includes/Zend/Search/Lucene/Storage/Directory/Filesystem.php on line 160
Warning: closedir(): supplied argument is not a valid Directory resource in /admin/includes/Zend/Search/Lucene/Storage/Directory/Filesystem.php on line 167
Fatal error: Ignoring exception from Zend_Search_Lucene_Proxy::__destruct() while an exception is already active (Uncaught Zend_Search_Lucene_Exception in /admin/includes/Zend/Search/Lucene/Storage/File/Filesystem.php on line 66) in /admin/test.php on line 549
我使用的是最新版本的ZF。是否存在此类错误的代码解决方案 - 我在localhost上运行脚本并且运行良好。
感谢您的帮助。
答案 0 :(得分:2)
似乎问题在于索引中的大量细分。
您可以查看索引文件夹包含的文件数量吗?
有两种方法可以解决这个问题: a)更频繁地优化索引。 b)使用另一个MaxBufferedDocs / MergeFactor参数。有关详细信息,请参阅Zend_Search_Lucene documentation。
如果没有帮助,请注册JIRA问题。
答案 1 :(得分:0)
PHP已经达到了它可以立即打开的文件数量限制似乎可能是在php.ini中更改的选项,可能是操作系统(配额)限制,或者您可以告诉索引器减速并没有同时打开这么多文件。
答案 2 :(得分:0)
这绝对是Linux /内核强加的限制。在计算机上以root身份使用以下命令:
cat /proc/sys/fs/file-nr
返回值定义为:
我也会猜测并说你在共享主机上。如果是这种情况,我想这种问题可能经常出现。
最后,以下文章提供了有关Linux和打开文件描述符的大量信息,即使它有点过时。