2

我正在尝试编写一个执行 sql 备份的 php 程序,并且我有很多数据库,我想将这些进程分成 3 个单独的进程。

我的 backup.php 文件接受一个字符串参数,还输出备份进度的文本数据。

所以这是我试图实现的逻辑。

while(there is still items in the list){
 open backup.php?s=listx
 x++
}
//continue with loop and open more processes

有没有办法在新标签页中打开这些页面?我尝试使用 curl 但这似乎不起作用,我想我在某处读过 html 标签或 javascript 代码不在 php 代码中运行?

感谢您的帮助,如果我的描述含糊不清,请告诉我,我会尝试扩展它。这是我的 mainbackup.php 代码

<?php

// Doesnt open a new page for me..
function callpage($url)
{
  $ch = curl_init();
  $timeout = 1;
  curl_setopt($ch,CURLOPT_URL,$url);
  curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
  curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
  curl_close($ch);
}


$link = mysql_connect('host', 'user', 'password');

//set each process to handle 60 databases
$limit=60;
$count=0;
$s="";



while ($row = mysql_fetch_assoc($link)) {
//echo $row['Database'] . "\n";
if($count <$limit)
{
    $count++;
    $s.= $row['dbs']. ",";
}
else
{
    //exec('php backup.php s='$s);
    $l='localhost/backup/backup.php?s=';
    $l.=$s;
    //window.open($l);
    callpage($l);
    //substr_replace($s ,"",-1);
    //echo "\n\n\n\n\n\n\n\n\n";

    $count=0;
        $s="";
    }


}

?>
4

2 回答 2

1

以为我会在这里发布我的解决方案,以防其他人在寻找。使用 php 输出将打开选项卡的 javascript。写得很快,所以它也打开了错误的同一页面。我想你以后可以解决这个问题。

<?php
echo "<html><body>";
$link = mysql_connect('remotehost', 'user', 'password');
$res = mysql_query("selective databases");

$limit=80;
$count=0;
$s="";
$link = '<a href="javascript:open_wins()">start backup</a><script>function open_wins(){window.open("backup.php?s=';

while ($row = mysql_fetch_assoc($res)) {
    if($count <$limit)
    {
        $count++;
        $s.= $row['dbs']. ",";
    }
    else
    {
        $link.=$s;
        $link.='");window.open("backup.php?s=';

        $count=0;
        $s="";
    }


}
$link.='");window.close();}</script></html>';
echo $link;
echo "</html></body>";
?>
于 2012-06-15T17:50:05.153 回答
0

您可以让备份过程为每个单独的数据集(您想要的选项卡)创建一个新页面,它将输出到这些页面,然后在原始页面上显示指向保存信息的页面的链接(使用 html 打开新标签)。

于 2012-06-14T19:56:03.033 回答