Автозаполнение на Ajax в Laravel идет слишком медленно - PullRequest
0 голосов
/ 16 мая 2019

У меня есть форма с функцией автозаполнения при вводе.Функция медленная.Средняя скорость набора текста выше, чем в списке автозаполнения.Вы можете закончить печатать до того, как появится предложение.Он использует jQuery и выполняет ajax-вызов URL-адреса, который вызывает функцию в контроллере, который затем запускает весь список, содержащий набранную строку:

Вкладка «Сеть» в инструментах разработчика Chrome показала только, как долгоВызванный URL занял около 700 мс.


public function searchResponse(Request $request){
        $query1 = $request->get('term','');
        $c1=\DB::table('T_EMPLOYEE_SERVICE_AREAS');
        if($request->type=='EmpService')

            {
                $c1->where('EmployeeService','LIKE','%'.$query1.'%')
                            ->groupBy('EmployeeService')
                            ->get();
            }

           $c1=$c1->get();        
        $data=array();
        foreach ($c1 as $service) {
                $data[]=array('EmployeeService'=>$service->EmployeeService);
        }
        if(count($data))
             return $data;
        else
            return ['EmployeeService'=>''];
    }

Помимо оптимизации вышеуказанного запроса - как мне проверить, где больше всего времени уходит.Я добавил ссылку на тот же скрипт автозаполнения, который я получил с другого форума http://www.expertphp.in/article/laravel-5-autocomplete-mutiple-fields-using-jquery-ajax-and-mysql

1 Ответ

1 голос
/ 16 мая 2019

Вы должны просто аннотировать свой код с некоторыми временными метками. Например:

$start = microtime(true);
foreach ($c1 as $service) {
    $data[]=array('EmployeeService'=>$service->EmployeeService);
}
$time_elapsed_secs = microtime(true) - $start;

Это даст вам представление о том, сколько времени занимает цикл foreach ().

Вот более полный пример профилирования: https://stackoverflow.com/a/29022400/7578556

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...