新手问题 - 将多个.sql脚本调用到PHP文件中

时间:2009-05-22 07:17:52

标签: php mysql

我有一个执行多个sql脚本的PHP文件。我发现前两个脚本执行,但最后两个脚本似乎永远不会完成。我在他们自己的PHP文件中单独测试了最后两个脚本并且脚本工作,所以我想知道是不是因为我在PHP脚本中进行的exec()调用次数。有什么建议?这是原始剧本:

<?php
session_start();

$host = "localhost"; 
$user = "user"; 
$pass = "pass"; 
$database = "database"; 

$linkID = mysql_connect($host, $user, $pass) or die("Could not connect to host."); 
mysql_select_db($database, $linkID) or die("Could not find database."); 


$query = sprintf("SELECT dbName FROM users where userName='%s'",
   $_SESSION['MM_Username']); 
$resultID = mysql_query($query) or die("Data not found."); 

list($dbName)= mysql_fetch_row($resultID);

exec("mysql -u user -ppassword ".$dbName." < ../scripts/makeTblFinalAnalysis.sql"); 
exec("mysql -u user -ppassword ".$dbName." < ../scripts/tblFinalDetailed.sql");
exec("mysql -u user -ppassword ".$dbName." < ../scripts/TblGridViews.sql");
exec("mysql -u user -ppassword ".$dbName." < ../scripts/makeTblGeo.sql");
header( 'Location: dashboards/dashboard.html' ) ;
exit;
?>

3 个答案:

答案 0 :(得分:3)

你可能会用完执行时间吗?脚本需要运行多长时间?

在PHP文档中查找set_time_limit();如果他们需要一段时间来运行,你会想要提高PHP执行超时。

答案 1 :(得分:1)

“但最后两个似乎永远不会完成。”也许是因为前两个脚本上的一些锁定,第三个脚本是死锁的?您可以尝试在sql服务器上一起执行这些脚本,以检查它是否成功执行并提交更改。同时发布sql查询可能会有所帮助。

答案 2 :(得分:0)

尝试将所有exec加入shell脚本并运行它。然后尝试在后台运行它。但是PHP不会等待脚本返回。

exec("nohup sqlRoutines.sh > /dev/null 2>&1 &");

这将从调用进程中分离脚本,并将stdout和stderr重定向到无处(或者如果你想要的话,还是logfile)。