【问题标题】:Extremely slow reccomendation engine极慢的推荐引擎
【发布时间】:2019-09-25 08:53:38
【问题描述】:

我正在尝试在 laravel 中为我的网站实现推荐引擎。我为它编写了代码,但代码非常慢。我运行了大约 5 分钟 从前到现在,它仍在加载。我的数据库表都没有多达 20 行。

有没有办法可以加快速度,或者我应该停止使用 laravel/php 作为推荐引擎?如果是,是什么语言等。

这是我的代码(重要部分)

public function showReccPosts(){





    /*
    $tsil =total similarity INdex for likers(those who liked a post)

    */
    $db='laravellikecomment_likes';


      $allposts= DB::table('posts')->pluck('id');
      $allposts = $allposts->toArray();

      $tn=count($allposts);
      $ai=0;$user=Auth::id();

      while ($allposts[$ai] <= $tn) {

         $recclist=array();
         $wl=DB::table($db)->where('item_id',$allposts[$ai])->where('vote', 1)->pluck('user_id');
         $wd=DB::table($db)->where('item_id',$allposts[$ai])->where('vote', -1)->pluck('user_id');
         $nl=count($wl);
         $nd=count($wd);
         $i=0;

        $tsil=0;$tsid=0;
         foreach ($wl as $key => $value) {
             $tsil=si($key,$user);
         }




         foreach ($wd as $key => $value) {
            $tsid=si($key,$user);
        }

            $possibility=$tsil+$tsid;
            $possibility=$possibility*3;
            $tagpossibility= 1;
            $posibility=$possibility+$tagpossibility;
            $posibility=$posibility/4;


            //$recclist = array_combine($allposts, $recclist);
            //arsort($reccclist);



      }







      function si($a,$b){
        $a_like=DB::table($db)->pluck('user_id')->where('user_id',$a)->where('vote',1);
        $a_like=$a_like->toArray();
        $a_dislike=DB::table($db)->pluck('user_id')->where('user_id',$a)->where('vote',-1);
        $a_dislike=$a_dislike->toArray();

        $b_like=DB::table($db)->pluck('user_id')->where('user_id',$b)->where('vote',1);
        $b_like=$a_like->toArray();
        $b_dislike=DB::table($db)->pluck('user_id')->where('user_id',$b)->where('vote',-1);
        $b_dislike=$a_dislike->toArray();

        $c = 0;
          foreach ($a_like as $i) {
           if (in_array($i,$b_like)) $c++;
           }
        $sil= $c/count($a_like);

        $d=0;
        foreach ($a_dislike as $i) {
            if (in_array($i,$b_dislike)) $d++;
            }
        $sid=$d/count($a_dislike);
        $tsil=($sil+$sid)/2;

        return $tsil;
    }




      return view('reccomended.index',compact('allposts','possibility'));

    }

【问题讨论】:

  • while ($allposts[$ai]

标签: laravel performance execution-time


【解决方案1】:

我忘记添加行$ai++ 以增加while 循环的偏移量$ai,不小心将php 脚本发送到无限循环

while ($allposts[$ai] <= $tn) 

【讨论】:

    猜你喜欢
    • 2012-01-09
    • 1970-01-01
    • 2011-02-11
    • 2017-10-26
    • 1970-01-01
    • 2011-01-19
    • 2012-10-16
    • 2014-04-18
    • 1970-01-01
    相关资源
    最近更新 更多