如何使用php pdo

时间:2015-06-19 21:29:55

标签: php mysql pdo

我正在创建一个CMS并创建了一个自我安装程序,用于在数据库中创建表。

我正在使用这个PHP代码,一切都在wamp上运行良好,但脚本在服务器上的10个文件之后就可以了。

if (!$db = new PDO('mysql:host='.$dbhost.'; dbname='.$dbname, $dbuser, $dbpass)){$msg = 'e|Could Not Connect.';}            
        elseif ($db = new PDO('mysql:host='.$dbhost.'; dbname='.$dbname, $dbuser, $dbpass)){
        $sql = '';
        foreach(glob('sql/*') as $file) {$sql .= file_get_contents($file);}     
        $db->exec($sql);    
        }       

sql/中总共有48个txt文件,如下所示:

--
-- Table structure for table `block_grids`
--

CREATE TABLE IF NOT EXISTS `block_grids` (
  `block_grid_id` int(12) NOT NULL AUTO_INCREMENT,
  `block_grid_name` varchar(25) NOT NULL,
  `row_items_small` tinyint(2) NOT NULL,
  `row_items_medium` tinyint(2) NOT NULL,
  `row_items_large` tinyint(2) NOT NULL,
  `equalize_block_grid` tinyint(1) NOT NULL,
  PRIMARY KEY (`block_grid_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

上传时服务器设置为200mMiBs,执行的10个文件总数仅为161KiBs。不太确定该去哪里......

上面的代码将所有文件连接在一起,这些文件在wamp上工作正常。我尝试使用此代码单独运行每个文件,但在每次尝试后只有4个:

if (!$db = new PDO('mysql:host='.$dbhost.'; dbname='.$dbname, $dbuser, $dbpass)){$msg = 'e|Could Not Connect.';}            
    elseif ($db = new PDO('mysql:host='.$dbhost.'; dbname='.$dbname, $dbuser, $dbpass)){
    $sql = '';
      foreach(glob('sql/*') as $file) {
      $sql = file_get_contents($file);
      $db->exec($sql);
      }     

    }            

2 个答案:

答案 0 :(得分:1)

由于您现在在主机上而不是wamp,以下可能在托管环境中可行,但请试一试。 (注意可能无法修改.cnf)

show variables like '%wait_timeout%';
show global variables like '%wait_timeout%';

您将在mysql提示符下运行:

set global wait_timeout=600

这是10分钟,可怜很长一段时间。您可以根据自己的需要选择价值,而不是我的废话。

任何新会话都会获得此值。

my.cnf中的镜像更改。文件。这在mysql重启时生效。

报告工作(或其他)中的任何一项交易自然都值得关注。将事务之外的任何非包装语句视为事务。

  

或作为一种解决方法制作许多teeenie文件

答案 1 :(得分:0)

默认情况下,PHP会在30秒后停止。你可以试试这个:

set_time_limit(300);
你的setup.php中的