检测语言; CakePHP更新所有不良性能

时间:2016-02-25 23:16:37

标签: php sockets localhost cakephp-3.0 language-detection

更新:我认为cakePhp updateAll是问题所在。如果我取消注释updateAll和pr结果我会在1-2秒内得到如此多的语言检测,如5分钟!我只需更新一行,并确定具有作者和标题的行......是否有更好更快的方式???

我正在使用detectlanguage.com来检测我的sql数据库中的所有英文文本。我的数据库包含大约500,000行。我尝试了很多东西来更快地检测我所有文本的语言。现在需要很多天......:/

  • 我只发送20%的文字(查看我的代码)
  • 我试图复制我的功能并多次运行该功能。复制的代码显示标题以A
  • 开头的所有文本的功能

我只能同时运行6个函数...(localhost)...我在新标签中尝试了第7个函数,但是

  

等待可用的套接字....

     public function detectLanguageA()
{
    set_time_limit(0);
    ini_set('max_execution_time', 0);

    $mydatas = $this->datas;

    $alldatas = $mydatas->find('all')->where(['SUBSTRING(datas.title,1,1) =' => 'A'])->where(['datas.lang =' => '']);

    foreach ($alldatas as $row) {
    $text = $row->text;
    $textLength = round(strlen($text)*0.2);
    $text = substr($text,0,$ltextLength);
        $title = $row->title;
    $author = $row->author;
            $languageCode = DetectLanguage::simpleDetect($text);

    $mydatas->updateAll(
                ['lang' => $languageCode], // fields
                ['author' => $author,'textTitle' => $title]); // conditions*/

    }
}

我希望有人对我的问题有所了解......现在我所有文本的语言检测都需要一周以上时间:/:/

我的电脑运行时间超过20小时,只有很少的中断......但我只检测到大约13.000种语言的语言......而且在我的数据库中有500.000种文本......

  • 现在我尝试批量发送文本,但它也慢了...我总是在一个数组中发送20个文本,我认为这是最大的......

cakePhp 3.X updateAll-function是否可能使它变得如此缓慢?

1 个答案:

答案 0 :(得分:0)

问题是CAKEPHP updateAll

现在我正在使用:http://book.cakephp.org/3.0/en/orm/saving-data.html#updating-data带有for循环,所有内容都快速且良好

use Cake\ORM\TableRegistry;

 $articlesTable = TableRegistry::get('Articles');

    for ($i = 1; $i < 460000; $i++) {
        $oneArticle = $articlesTable->get($i);

        $languageCode = DetectLanguage::simpleDetect($oneArticle->lyrics);

        $oneArticle->lang = $languageCode;
        $articlesTable->save($oneSong);
    }