@grenline123123

Как ускорить работу скрипта?

Я более чем уверен что этот скрипт максимально медленный, по этому прошу помощи. Мне нужно лишь подсказать что можно сделать для ускорение толкового, либо указать где срочно нужно убрать что-то. Спасибо

<?php
set_time_limit(3000);

# Функция для сохранения изображений
function GetImageFromUrl($link) {
	$ch = curl_init();
	curl_setopt($ch, CURLOPT_POST, 0);
	curl_setopt($ch,CURLOPT_URL,$link);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	$result=curl_exec($ch);
	curl_close($ch);
	return $result;
}


require 'simple_html_dom.php'; // подключаем библиотеку
require 'db.php'; // подключаем базу данных

$html = file_get_html('https://iaai.com/ru-ru/LiveAuctionsCalendar#stay_here'); // что парсим

# Главная информация
$massive_name = []; // Массив для названия объявления
$massive_link = []; // Массив ссылок на аукцион

# Информация автомобиля
$stock = []; $selling_branch = []; $vin_status = []; $loss = []; $primary_damage = [];
$title_sale_doc = []; $title_sale_doc_brand = []; $start_code = []; $key = [];
$odometr = []; $airbags = [];
//------[Vehicle Description]------
$vehicle = []; $body_style = []; $engine = []; $transmission = []; $drive_line_type = [];
$fuel_type = []; $cylinders = []; $restraint_system = []; $exterior_interior = [];
$manufactured_in = []; $model = [];
//------[SALE INFORMATION]--------
$vehicle_location = [];
$auction_date_time = []; $lane_run = []; $aisle_stall = [];
$actual_cash_value = []; $estimated_repair_cost = []; $seller = [];


# Получаем ссылки для аукционов
foreach($html->find('.table-cell--status a') as $element) { // ищем нужный елемент
    $massive_name[] = [
        'https://iaai.com/ru-ru/'.$element->href // запись в массив ссылки на аукционные объявление
    ];
}

# Достаем ссылки аукционов
for($i = 0; $i < count($massive_name); $i++) {
    $href = file_get_html($massive_name[$i][0]); // что парсим
    foreach($href->find('.js-show-hide-image a') as $element) { // ищем нужный елемент
        $massive_link[] = [
            $element->href // запись в массив прямой ссылки на аукционное объявление
        ];
    }
}

for($i = 0; $i < count($massive_link); $i++) {
    $href = file_get_html($massive_link[$i][0]); // что парсим

    $info = $href->find('.data-list__item span'); // ищем нужный елемент
    $info_ = $href->find('.data-list__item a'); // ищем нужный елемент

    
    $get = file_get_contents('https://bid.cars/app/search/fast/'.strip_tags($info[1])); // ищем лот
    $obj = json_decode($get); // переводим json в массив php
    $vin_get = file_get_html($obj->{'url'}); // переходим на страницу лота
    $vin = $vin_get->find('.vin-drop h1'); // ищем нужный елемент
    $sell = $vin_get->find('.h5 span i b'); // ищем нужный елемент

    # Запись данных в массиви
    $stock[] = [
        $info[1]
    ];

    $selling_branch[] = [
        $info[3]
    ];

    $loss[] = [
        $info[10]
    ];

    $primary_damage[] = [
        $info[12]
    ];

    $title_sale_doc[] = [
        $info[14]
    ];

    $title_sale_doc_brand[] = [
        $info[16]
    ];

    $start_code[] = [
        $info[21]
    ];

    $key[] = [
        $info[26]
    ];

    $odometr[] = [
        $info[28]
    ];

    $airbags[] = [
        $info[30]
    ];

    $vehicle[] = [
        $info[37]
    ];

    $body_style[] = [
        $info[39]
    ];

    $engine[] = [
        $info[44]
    ];

    $transmission[] = [
        $info[46]
    ];

    $drive_line_type[] = [
        $info[48]
    ];

    $fuel_type[] = [
        $info[50]
    ];

    $cylinders[] = [
        $info[52]
    ];

    $restraint_system[] = [
        $info[54]
    ];

    $exterior_interior[] = [
        $info[56]
    ];

    $manufactured_in[] = [
        $info[59]
    ];

    $model[] = [
        $info[61]
    ];

    $vehicle_location[] = [
        $info[83]
    ];

    $auction_date_time[] = [
        $info_[1]
    ];

    $lane_run[] = [
        $info[86]
    ];

    $aisle_stall[] = [
        $info[88]
    ];

    $actual_cash_value[] = [
        $info[90]
    ];

    $estimated_repair_cost[] = [
        $info[93]
    ];

    $vin_status[] = [
        $vin[0]
    ];

    $seller[] = [
        $sell[0]
    ];

    $sql = "INSERT INTO `auction`(`stock`, `selling_branch`, `vin_status`,
    `loss`, `primary_damage`, `title_sale_doc`, `title_sale_doc_brand`, `start_code`, 
    `key_`, `odometr`, `airbags`, `vehicle`, `body_style`, `engine`, `transmission`, 
    `drive_line_type`, `fuel_type`, `cylinders`, `restraint_system`, `exterior_interior`, 
    `manufactured_in`, `model`, `vehicle_location`, `auction_date_time`, `lane_run`, `aisle_stall`, 
    `actual_cash_value`, `estimated_repair_cost`, `seller`) VALUES 
    ('".strip_tags($stock[$i][0])."','".strip_tags($selling_branch[$i][0])."','".strip_tags($vin_status[$i][0])."','".strip_tags($loss[$i][0])."'
    ,'".strip_tags($primary_damage[$i][0])."','".strip_tags($title_sale_doc[$i][0])."','".strip_tags($title_sale_doc_brand[$i][0])."'
    ,'".strip_tags($start_code[$i][0])."','".strip_tags($key[$i][0])."','".strip_tags($odometr[$i][0])."'
    ,'".strip_tags($airbags[$i][0])."','".strip_tags($vehicle[$i][0])."','".strip_tags($body_style[$i][0])."'
    ,'".strip_tags($engine[$i][0])."','".strip_tags($transmission[$i][0])."','".strip_tags($drive_line_type[$i][0])."'
    ,'".strip_tags($fuel_type[$i][0])."','".strip_tags($cylinders[$i][0])."','".strip_tags($restraint_system[$i][0])."'
    ,'".strip_tags($exterior_interior[$i][0])."','".strip_tags($manufactured_in[$i][0])."','".strip_tags($model[$i][0])."'
    ,'".strip_tags($vehicle_location[$i][0])."','".strip_tags($auction_date_time[$i][0])."','".strip_tags($lane_run[$i][0])."'
    ,'".strip_tags($aisle_stall[$i][0])."','".strip_tags($actual_cash_value[$i][0])."','".strip_tags($estimated_repair_cost[$i][0])."'
    ,'".strip_tags($seller[$i][0])."')"; // Запрос в базу данных для добавление новой записи

    $dbh->query($sql); // отправляем запрос
    $id = $dbh->lastInsertId(); // получаем ID новой записи

    foreach($vin_get->find('.gallery-thumbnails a') as $element) { // ищем нужный елемент
        preg_match("/('(.*?)')/", $element->getAttribute('style'), $matches); // Достаем из стиля css ссылку на изображение
        $sql = "INSERT INTO `images` (`name`,`id_auction`) VALUES ('".$matches[2]."','".$id."')"; // Запрос в базу данных для добавление новой записи
        $dbh->query($sql); // отпарвляем запрос

    }
}

exit();
  • Вопрос задан
  • 179 просмотров
Пригласить эксперта
Ответы на вопрос 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
разбить на куски, замерить время исполнения, потом искать способ ускорить конкретный участок кода. Вся эта вышеприведенная простыня в плане скорости никому ни о чем не скажет.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы