如何每天从其他服务器自动加载数据

时间:2016-07-29 10:00:17

标签: php mysql linux ssh

您好我需要创建一些自动连接到另一台服务器使用php库然后我需要在mysql数据库中加载数据只有第一个文件上传每天上传一个新文件。问题是如何继续每天将文件上传到数据库我几乎就在那里

以下是代码:

<?php
include 'core/init.php';
include 'includes/overall/header.php';

//connection to linux server
$conn = ssh2_connect('xxx.xxx.xx.xxx', 22);
$destinationPath = '/path/to/destination/path/';
$localPath = 'C:\path\to\local\path\';

//checks if the connection is successful or not
if(ssh2_auth_password($conn, 'username', 'password')){ 
 echo '<script type="text/javascript">alert("Authentication was successful");   </script>'; //javascript pop up when successful
  }else{
    die("Authentication failed");
}

if(ssh2_scp_recv($conn, $destinationPath, $localPath)){ 
echo '<h2>Todays file recieved</h2>'; //if file was recieved from server to   local echo todays file recieved, putting the file in localpath
}else{ //if the file was not uploaded send an email for radar file too be  uploaded

$to = 'testemail@yahoo.co.uk';
$subject = 'the subject';
$message = 'hello';
$headers = "From: The Sender Name <senderEmail@yahoo.co.uk>\r\n";
$headers .= "Reply-To: senderEmail@yahoo.coom\r\n";
$headers .= "Content-type: text/html\r\n";
mail($to, $subject, $message, $headers);

}

$string = file_get_contents('http://localhost/Prototype/core/edit.txt', 'r');//get contents of file from web used to read the file
$myFile = 'C:wampwwwPrototypecoreedit.txt';//file directory
$fh = fopen($myFile, 'w') or die("Could not open: " .mysql_error());//open the file
fwrite($fh, $string);
fclose($fh);
$result = mysql_query("LOAD DATA LOCAL INFILE '$myFile'". "INTO TABLE `restartdata` FIELDS TERMINATED BY ',' ");
  if (!$result) {
     die("Could not load." . mysql_error());
    }else{
 echo 'data loaded in the database';
     }

1 个答案:

答案 0 :(得分:2)

绝对不使用PHP。绝对没有什么是家里的。有一个内置的机制。它被称为replication已经过15年多的尝试和测试,它被用于数千个装置。

  

复制启用来自一个MySQL数据库服务器(主服务器)的数据   被复制到一个或多个MySQL数据库服务器(从属服务器)。   默认情况下,复制是异步的奴隶不需要   永久连接以接收来自主服务器的更新。取决于   在配置中,您可以复制所有选定的数据库   数据库,甚至是数据库中的选定表。

在PHP中执行此操作意味着每天或每小时转储整个数据库,在此期间,网站在转储过程中无响应。然后你必须通过HTTP传输整个数据库。

最后但并非最不重要的是,您的PHP方法不允许持续存档。如果您每天存档一次,如果系统在最后一次备份后23:50小时失败会发生什么?