骑士3.2版本对发布的职位、简历信息会进行自动关键词提取,方便进行全文搜索,由这个过程效率非常低,并且狂占cpu。
发一条信息时等个3、4秒钟倒感觉不出,但站长朋友如要实现信息的批量抓取后自动发布功能,一次发100条信息,那平均要300秒以上才能发完,关键对服务器压力太大。
具体原因见 include/splitword.class.php 该文件以下代码
function __construct()
{
$dicfile = dirname(__FILE__)."/word.txt";
$fp = fopen($dicfile,'r');
while($line = fgets($fp,256))
{
$line = trim($line);
$this->dicword[strlen($line)][$line]=1;
}
fclose($fp);
}
复制代码
这里是实现从 word.txt里一行行读取内容,那我们看看 word.txt文件总共有多少行。打开 include/word.txt文件看了下
总计 77297 行,也即每次发布内容时,程序要循环运行7万多次,即php最不擅长的就是大量的循环,效率的瓶颈就在这里。
以下是解决方法