Hirdetés

Keresés

Új hozzászólás Aktív témák

  • vgyuri

    őstag

    válasz pittbaba #1623 üzenetére

    Ez az én sufni-tuning megoldásom. Otthoni 4 éves gépen 114 mp., szerveren 46 mp. alatt töltötte be mysql-be a 112 mbyte-os fájlt. Indexeket nem állítottam be, mert úgy nagyon lassú volt.

    <?php

    $sorinsert=10000; // ennyi soronként insert mysql-be
    $szerver='127.0.0.1';
    $user='gtfsuser';
    $pass='';
    $adatbazis='gtfs';

    $tabla='stop_times';
    $file='stop_times.txt';

    // kapcsolódás
    if ( !mysql_connect($szerver, $user, $pass) ) { echo 'Nem érhetõ el a szerver.'; die(); }
    if ( !mysql_select_db($adatbazis) ) { echo 'Nem érhetõ el a '.$adatbazis.' adatbázis.'; die(); }

    mysql_query('TRUNCATE TABLE `stop_times`');
    mysql_query('FLUSH TABLE `stop_times`');
    $query=''; $ido=idopont();

    // file betöltés
    if ( !$fa=fopen($file, 'r') ) { echo 'Nem nyitható meg: '.$file; die(); }
    $sor=fgets($fa, 256); $sorszam=0; // elsõ sor kihagyása

    while ( !feof($fa) ) {
    @set_time_limit(30);
    $sor=fgets($fa, 256);
    $sorszam++;

    $sor=str_replace(",", "','", $sor);
    if ( $query<>'' ) { $query.=', '; }
    $query.=" ('".$sor."', '')";

    if ( $sorszam==$sorinsert ) {
    mysql_query('INSERT INTO '.$tabla.' VALUES '.$query);
    echo $sorinsert.' sor beillesztve<br>';
    $sorszam=0; $query='';
    }

    }
    if ( $query<>'' ) { mysql_query('INSERT INTO '.$tabla.' VALUES '.$query); }
    fclose($fa);


    echo '<br>Eltelt idõ: '.idopont($ido);



    // eltelt idõ
    function idopont($t=0) {
    list( $usec, $sec ) = explode(" ",microtime());
    $ido=( (float)$usec+(float)$sec );
    if ( $t===0 ) { return $ido; }

    $s=(float)$ido-$t;
    $s=round($s, 4);

    return $s;
    }


    /*
    CREATE TABLE IF NOT EXISTS `stop_times` (
    `trip_id` varchar(20) COLLATE utf8_hungarian_ci NOT NULL,
    `arrival_time` varchar(8) COLLATE utf8_hungarian_ci NOT NULL,
    `departure_time` varchar(8) COLLATE utf8_hungarian_ci NOT NULL,
    `stop_id` varchar(20) COLLATE utf8_hungarian_ci NOT NULL,
    `stop_sequence` varchar(20) COLLATE utf8_hungarian_ci NOT NULL,
    `shape_dist_traveled` varchar(20) COLLATE utf8_hungarian_ci NOT NULL,
    `kulcs` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
    PRIMARY KEY (`kulcs`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_hungarian_ci;
    */

    ?>

Új hozzászólás Aktív témák