我正在创建一个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);
}
}
答案 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中的