1

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

我正在使用detectlanguage.com来检测我的 sql 数据库中的所有英文文本。我的数据库由大约 500.000 行组成。我尝试了很多方法来更快地检测我所有文本的语言。现在需要很多天......:/

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

我只能同时运行 6 个功能...(本地主机)...我在新选项卡中尝试了第 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 是否有可能让它变得如此缓慢?

4

1 回答 1

0

问题是 CAKEPHP 更新所有

现在我正在使用: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);
    }
于 2016-02-26T12:59:55.750 回答