我正在尝试将一些数据库中的一些选定数据从1月1日到期的服务器上复制到另一个数据库中,以便我可以保留它。 第二个数据库位于不同的服务器上,不同的主机等 - 我不再可以访问第一个数据库,但只知道我需要的项目的各个位置。
我已经做了一些关于如何做到这一点的搜索,但是大多数时候我提出了链接服务器的要求 - 这是因为我无法访问原始服务器,所以不是一种选择。
我编写了以下内容,但每当我运行脚本时(我只需要一次并按需)我就会遇到网关超时。
$link = mysql_connect('XXXXaddressXXXX', 'XXXXuserXXXX', 'XXXXXXpwXXXXX'); //edited out the access details for security
$row = mysql_select_db('sfi_db', $link);
$query = "SELECT t.entry_id, t.title, t.year, t.month, t.day, d.field_id_1, d.field_id_2, d.field_id_3 FROM sfi_db.exp_channel_titles t LEFT JOIN sfi_db.exp_channel_data d ON t.entry_id = d.entry_id WHERE d.field_id_5='Latest-Updates'";
$results=mysql_query($query);
while($row=mysql_fetch_row($results)){
$id=$row[0];
$title = $row[1];
$year = $row[2];
$month = $row[3];
$day = $row[4];
$summary = $row[5];
$body = $row[6];
$image = $row[7];
$dBIP='XXXAddressOfSecondServerXXXX';
$dBADN='XXXXUserofSecondServerXXXX';
$dBPWD='XXXXPWofSecondServer';
$dBDBS="XXXXDBnameXXXX";
// Connection
$CONNECTW=mysql_connect($dBIP,$dBADN,$dBPWD);
$row=mysql_select_db($dBDBS, $CONNECTW);
mysql_query("INSERT INTO $dBIP.$dBDBS.newsimport (id,title,year,month,day,summary,body,image_url) VALUES ('$id','$title','$year','$month','$day','$summary','$body','$image')",$CONNECTW);
$link = mysql_connect('XXXXaddressXXXX', 'XXXXuserXXXX', 'XXXXXXpwXXXXX');
$row = mysql_select_db('sfi_db', $link);
}
最后一个连接是重新连接到第一个数据库,因为脚本是为原始第一个查询中的每个项目运行的。
任何有助于找出我做错事的帮助都很宝贵!谢谢。
///在第一次回复后被编辑
我现在编辑了代码,但仍然得到504网关错误。新代码如下:
// Connection 1
$link = mysql_connect('XXXXaddressXXXX', 'XXXXuserXXXX', 'XXXXXXpwXXXXX'); //edited out the access details for security
$row = mysql_select_db('sfi_db', $link);
$dBIP='XXXAddressOfSecondServerXXXX';
$dBADN='XXXXUserofSecondServerXXXX';
$dBPWD='XXXXPWofSecondServer';
$dBDBS="XXXXDBnameXXXX";
// Connection 2
$CONNECTW=mysql_connect($dBIP,$dBADN,$dBPWD);
$row=mysql_select_db($dBDBS, $CONNECTW);
$query = "SELECT t.entry_id, t.title, t.year, t.month, t.day, d.field_id_1, d.field_id_2, d.field_id_3 FROM sfi_db.exp_channel_titles t LEFT JOIN sfi_db.exp_channel_data d ON t.entry_id = d.entry_id WHERE d.field_id_5='Latest-Updates'";
$results=mysql_query($query);
while($row=mysql_fetch_row($results)){
$id=$row[0];
$title = $row[1];
$year = $row[2];
$month = $row[3];
$day = $row[4];
$summary = $row[5];
$body = $row[6];
$image = $row[7];
mysql_query("INSERT INTO $dBIP.$dBDBS.newsimport (id,title,year,month,day,summary,body,image_url) VALUES ('$id','$title','$year','$month','$day','$summary','$body','$image')",$CONNECTW);
}
答案 0 :(得分:1)
// Connection 1
$link = mysql_connect('XXXXaddressXXXX', 'XXXXuserXXXX', 'XXXXXXpwXXXXX'); //edited out the access details for security
mysql_select_db('sfi_db', $link) or die("Can't connect to first database");
// Connection 2
$dBIP='XXXAddressOfSecondServerXXXX';
$dBADN='XXXXUserofSecondServerXXXX';
$dBPWD='XXXXPWofSecondServer';
$dBDBS="XXXXDBnameXXXX";
$CONNECTW=mysql_connect($dBIP,$dBADN,$dBPWD);
mysql_select_db($dBDBS, $CONNECTW) or die("Can't connect to second database");;
$query = "SELECT t.entry_id, t.title, t.year, t.month, t.day, d.field_id_1, d.field_id_2, d.field_id_3 FROM sfi_db.exp_channel_titles t LEFT JOIN sfi_db.exp_channel_data d ON t.entry_id = d.entry_id WHERE d.field_id_5='Latest-Updates'";
$results=mysql_query($query,$link);
while($row=mysql_fetch_row($results)){
$id=$row[0];
$title = $row[1];
$year = $row[2];
$month = $row[3];
$day = $row[4];
$summary = $row[5];
$body = $row[6];
$image = $row[7];
mysql_query("INSERT INTO $dBDBS.newsimport (id,title,year,month,day,summary,body,image_url) VALUES ('$id','$title','$year','$month','$day','$summary','$body','$image')",$CONNECTW);
}
发生了什么变化:
row=
以支持骰子。$link
这应该有效,你的504错误可能是因为你的脚本执行时间太长而你点击了timeout parameter
您可以通过在每个循环结束时调用set_time_limit()或将值更改为php.ini
来解决此问题。认为您的网络服务器(apache或其他)也在GET请求上超时。