Чрезвычайно медленный двигатель рекомендации - PullRequest
1 голос
/ 07 мая 2019

Я пытаюсь внедрить механизм рекомендаций для моего сайта в 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'));

    }

1 Ответ

0 голосов
/ 08 мая 2019

Я случайно отправил скрипт php в бесконечный цикл, забыв добавить строку $ai++ для увеличения смещения $ai для цикла while

while ($allposts[$ai] <= $tn) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...