Autor Wątek: problem z minigog.sqlite  (Przeczytany 3419 razy)

Offline Tomson

  • Młody user
  • *
  • Wiadomości: 19
  • Reputacja: 0
problem z minigog.sqlite
« dnia: Październik 07, 2011, 22:25:06 pm »
Pliki bazy rozrosły się do 6-10 MB i jak php przerabia je to za każdym razem zarzyna to serwer. Jest jakaś alternatywa dla tego? Np. przesiadka na mysql ?

Offline Dulin

  • Młody user
  • *
  • Wiadomości: 3
  • Reputacja: 0
  • Płeć: Mężczyzna
Odp: problem z minigog.sqlite
« Odpowiedź #1 dnia: Październik 10, 2011, 02:40:31 am »
Witam,

6-10MB to nie jest dużo moja aktualna baza ma 214M w tym, że odseparowałęm skrypty pingujące i dodałem do crontaba (jakies 30 RPC)
Jestem również na etapie migracji stworzyłem strukturę bazy
CREATE TABLE IF NOT EXISTS `articles` (
  `id` int(32) NOT NULL AUTO_INCREMENT,
  `title` varchar(256) COLLATE utf8_polish_ci NOT NULL,
  `text` text COLLATE utf8_polish_ci NOT NULL,
  `www` varchar(256) COLLATE utf8_polish_ci NOT NULL,
  `keywords` text COLLATE utf8_polish_ci NOT NULL,
  `ip` varchar(64) COLLATE utf8_polish_ci NOT NULL,
  `ping` int(1) NOT NULL DEFAULT '0',
  `verif` int(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=1 ;

CREATE TABLE IF NOT EXISTS `ban` (
  `www` varchar(256) COLLATE utf8_polish_ci NOT NULL,
  `ip` varchar(64) COLLATE utf8_polish_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;

CREATE TABLE IF NOT EXISTS `config` (
  `key` varchar(64) COLLATE utf8_polish_ci NOT NULL,
  `value` varchar(64) COLLATE utf8_polish_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;

INSERT INTO `config` (`key`, `value`) VALUES
('cron', '1253101204'),
('ping', '1318042742'),
('add_form', '1'),
('add_mini', '1');

CREATE TABLE IF NOT EXISTS `entries` (
  `id` int(32) NOT NULL AUTO_INCREMENT,
  `title` varchar(256) COLLATE utf8_polish_ci NOT NULL,
  `desc` text COLLATE utf8_polish_ci NOT NULL,
  `keywords` text COLLATE utf8_polish_ci NOT NULL,
  `www` varchar(256) COLLATE utf8_polish_ci NOT NULL,
  `ip` varchar(64) COLLATE utf8_polish_ci NOT NULL,
  `ping` int(1) NOT NULL DEFAULT '0',
  `verif` int(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=1 ;

CREATE TABLE IF NOT EXISTS `tags` (
  `id` int(32) NOT NULL AUTO_INCREMENT,
  `name` text COLLATE utf8_polish_ci NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=1 ;

i converter:
<?php
$pdo 
= new pdo('sqlite:./minigog.sqlite');
//mysql
$link=mysql_connect('localhost','root','');
mysql_select_db('katalog'$link);


// Tags
$q $pdo->query('select * from tags');
$own $q->fetchAll();
foreach(
$own as $key )
{
        
mysql_query('INSERT INTO `tags` (`id`, `name`) VALUES ( ' $key['t_id'] . ',  \'' addslashes($key['t_name']) . '\' );'$link);

}

// Articles
$q $pdo->query('select * from articles');
$own $q->fetchAll();
foreach(
$own as $key )
{
        
mysql_query('INSERT INTO `articles` (`id`, `title`, `text`, `www`, `keywords`, `ip`, `ping`, `verif`) VALUES (
                ' 
$key['a_id'] . ',
                \'' 
addslashes($key['a_title']) . '\',
                \'' 
addslashes($key['a_text']) . '\',
                \'' 
addslashes($key['a_www']) . '\',
                \'' 
addslashes($key['a_keywords']) . '\',
                \'' 
$key['a_ip'] . '\',
                ' 
$key['a_ping'] . ',
                ' 
$key['a_verif'] . '
        );'
$link);

}

// Entries
$q $pdo->query('select * from entries');
$own $q->fetchAll();
foreach(
$own as $key )
{
        
mysql_query('INSERT INTO `entries` (`id`, `title`, `desc`, `keywords`, `www`, `ip`, `ping`, `verif`) VALUES (
                ' 
$key['e_id'] . ',
                \'' 
addslashes($key['e_title']) . '\',
                \'' 
addslashes($key['e_desc']) . '\',
                \'' 
addslashes($key['e_keywords']) . '\',
                \'' 
addslashes($key['e_www']) . '\',
                \'' 
$key['e_ip'] . '\',
                ' 
$key['e_ping'] . ',
                ' 
$key['e_verif'] . '
        );'
$link);

}

// ban
$q $pdo->query('select * from ban');
$own $q->fetchAll();
foreach(
$own as $key )
{
        
mysql_query('INSERT INTO `ban` (`www`, `ip`) VALUES (
                \'' 
addslashes($key['b_www']) . '\',
                \'' 
addslashes($key['b_ip']) . '\'
        );'
$link);

}

// config
$q $pdo->query('select * from config');
$own $q->fetchAll();
foreach(
$own as $key )
{
        
mysql_query('INSERT INTO `config` (`key`, `value`) VALUES (
                \'' 
addslashes($key['key']) . '\',
                ' 
$key['value'] . '
        );'
$link);
}

?>

Tylko zostałem zatrzymatrzymany na etapie związanym z kodowaniem kilka polskich znaków jest inna niż powinna...

Offline Dulin

  • Młody user
  • *
  • Wiadomości: 3
  • Reputacja: 0
  • Płeć: Mężczyzna
Odp: problem z minigog.sqlite
« Odpowiedź #2 dnia: Październik 10, 2011, 08:43:07 am »
@UP
To nie był problem z kodowaniem, wpisy na które zwróciłem uwagę na kilka wpisów.

Co do wydajności:
wystarczy ustawić:
$config['rand_tags'] = 0;I katalog chodzi jak burza, więcej info: http://blog.ksiazek.info/2010/05/04/order-by-rand-to-zlo

Offline Tomson

  • Młody user
  • *
  • Wiadomości: 19
  • Reputacja: 0
Odp: problem z minigog.sqlite
« Odpowiedź #3 dnia: Październik 10, 2011, 20:30:46 pm »
Problem pojawia się, jeśli ma się takich webmini około stu :) Nadal nie wiem jak ten problem rozwiązać, nie jestem programistą :/ także potrzebowałbym gotowego rozwiązania. Jeśli nie to trzeba będzie ograniczyć ilość katalogów na tym serwerze.