Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/perl
- use strict;
- use warnings;
- use DBI;
- my $user = 'root';
- my $pass = '';
- my $dsn = 'DBI:mysql:test';
- my %attr = (RaiseError => 1, AutoCommit => 1);
- start();
- my $pid;
- my @wait;
- my @names = qw/kamipo dealforst hirafoo sasata299 waji/;
- for (0 .. 4) {
- my $name = $names[$_];
- if ($pid = fork) {
- print "start $name\n";
- push @wait, sub { wait };
- }
- elsif (defined $pid) {
- #insert($name);
- ::select();
- print "finish $name\n";
- exit;
- }
- else {
- die $!;
- }
- }
- $_->() for @wait;
- finish();
- print "finish all\n";
- sub start {
- my $dbh = DBI->connect($dsn, $user, $pass, \%attr);
- $dbh->do(q{DROP TABLE IF EXISTS `tx_bench`});
- $dbh->do(<<SQL);
- CREATE TABLE `tx_bench` (
- `id` int(11) NOT NULL auto_increment,
- `name` varchar(255) NOT NULL,
- PRIMARY KEY (`id`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
- SQL
- $dbh->do(q{INSERT INTO `tx_bench` (`name`) VALUES ('start')});
- $dbh->disconnect;
- }
- sub insert {
- my $name = shift;
- my $dbh = DBI->connect($dsn, $user, $pass, \%attr);
- my $sth = $dbh->prepare(q{INSERT INTO `tx_bench` (`name`) VALUES (?)});
- $dbh->begin_work;
- $sth->execute($name) for 1 .. 10000;
- $dbh->commit;
- $dbh->begin_work;
- $sth->execute($name) for 1 .. 10000;
- $dbh->commit;
- $sth->finish;
- $dbh->disconnect;
- }
- sub select {
- my $dbh = DBI->connect($dsn, $user, $pass, \%attr);
- my $sth = $dbh->prepare(q{SELECT * FROM `tx_bench` WHERE `id` = ?});
- $sth->execute($_) for 1 .. 100000;
- }
- sub finish {
- my $dbh = DBI->connect($dsn, $user, $pass, \%attr);
- $dbh->do(q{INSERT INTO `tx_bench` (`name`) VALUES ('finish')});
- $dbh->disconnect;
- }
Add Comment
Please, Sign In to add comment