Guest User

Untitled

a guest
Mar 4th, 2018
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.67 KB | None | 0 0
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. use DBI;
  5.  
  6. my $user = 'root';
  7. my $pass = '';
  8. my $dsn = 'DBI:mysql:test';
  9. my %attr = (RaiseError => 1, AutoCommit => 1);
  10.  
  11. start();
  12.  
  13. my $pid;
  14. my @wait;
  15.  
  16. my @names = qw/kamipo dealforst hirafoo sasata299 waji/;
  17.  
  18. for (0 .. 4) {
  19. my $name = $names[$_];
  20. if ($pid = fork) {
  21. print "start $name\n";
  22. push @wait, sub { wait };
  23. }
  24. elsif (defined $pid) {
  25. #insert($name);
  26. ::select();
  27. print "finish $name\n";
  28. exit;
  29. }
  30. else {
  31. die $!;
  32. }
  33. }
  34.  
  35. $_->() for @wait;
  36.  
  37. finish();
  38.  
  39. print "finish all\n";
  40.  
  41. sub start {
  42. my $dbh = DBI->connect($dsn, $user, $pass, \%attr);
  43.  
  44. $dbh->do(q{DROP TABLE IF EXISTS `tx_bench`});
  45. $dbh->do(<<SQL);
  46. CREATE TABLE `tx_bench` (
  47. `id` int(11) NOT NULL auto_increment,
  48. `name` varchar(255) NOT NULL,
  49. PRIMARY KEY (`id`)
  50. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  51. SQL
  52.  
  53. $dbh->do(q{INSERT INTO `tx_bench` (`name`) VALUES ('start')});
  54. $dbh->disconnect;
  55. }
  56.  
  57. sub insert {
  58. my $name = shift;
  59. my $dbh = DBI->connect($dsn, $user, $pass, \%attr);
  60. my $sth = $dbh->prepare(q{INSERT INTO `tx_bench` (`name`) VALUES (?)});
  61.  
  62. $dbh->begin_work;
  63. $sth->execute($name) for 1 .. 10000;
  64. $dbh->commit;
  65.  
  66. $dbh->begin_work;
  67. $sth->execute($name) for 1 .. 10000;
  68. $dbh->commit;
  69.  
  70. $sth->finish;
  71. $dbh->disconnect;
  72. }
  73.  
  74. sub select {
  75. my $dbh = DBI->connect($dsn, $user, $pass, \%attr);
  76. my $sth = $dbh->prepare(q{SELECT * FROM `tx_bench` WHERE `id` = ?});
  77. $sth->execute($_) for 1 .. 100000;
  78. }
  79.  
  80. sub finish {
  81. my $dbh = DBI->connect($dsn, $user, $pass, \%attr);
  82.  
  83. $dbh->do(q{INSERT INTO `tx_bench` (`name`) VALUES ('finish')});
  84. $dbh->disconnect;
  85. }
Add Comment
Please, Sign In to add comment