我希望能够通过ftp以文件的形式将php数组从一台服务器传输到另一台服务器。
接收服务器需要能够打开所述文件并读取其内容并使用提供的阵列。
我已经考虑过这两种方式,或者从服务器1用一个数组的PHP代码编写一个php文件,然后简单地在服务器2上加载这个文件。但是,当深度为2时,编写所述文件会变得棘手。数组未知。
所以我虽然将数组写入json编码的文件,但我不知道第二台服务器如何打开并读取所述数据。
我可以这样做:
$jsonArray= json_encode($masterArray);
$fh = fopen('thefile.txt' , 'w');
fwrite($fh, $thePHPfile);
fclose($fh);
然后在另一台服务器上将数据打开成一个变量:
$data = json_decode( include('thefile.txt') );
以前有没有人有这方面的经验?
答案 0 :(得分:3)
对于第一台服务器,通过FTP连接到第二台服务器并将该文件内容放入文件
$jsonArray = json_encode($masterArray);
$stream = stream_context_create(array('ftp' => array('overwrite' => true)));
file_put_contents('ftp://user:pass@host/folder/thefile.txt', $jsonArray, 0, $stream);
将file_get_contents()
用于第二台服务器:
$data = json_decode( file_get_contents('/path/to/folder/thefile.txt') );
答案 1 :(得分:2)
如果您只对使用PHP阅读文件感兴趣,是否考虑过使用serialize()
和unserialize()
?
请参阅http://php.net/manual/en/function.serialize.php
它的可能比json_encode()
/ json_decode()
更快(见http://php.net/manual/en/function.serialize.php#103761)。
答案 2 :(得分:1)
您要查找的PHP函数是: file_get_contents
$masterArray = array('Test','Test2','Test3');
$jsonArray= json_encode($masterArray);
$fh = fopen('thefile.txt' , 'w');
fwrite($fh, $jsonArray);
fclose($fh);
然后在另一台服务器上:
$masterArray = json_decode( file_get_contents('thefile.txt') );
var_dump($masterArray);
答案 3 :(得分:1)
要使用文件作为媒介在服务器之间“传输”数组,您可以使用json_encode
和json_decode
找到一个不错的解决方案。 serialize
和unserialize
函数可以很好地执行相同的目标。
$my_array = array('contents', 'et cetera');
$serialized = serialize($my_array);
$json_encoded = json_encode($my_array);
// here you send the file to the other server, (you said you know how to do)
// for example:
file_put_contents($serialized_destination, $serialized);
file_put_contents($json_encoded_destination, $json_encoded);
在接收服务器中,您只需要读取文件内容并应用相应的“解析”功能:
$serialized = file_get_contents($serialized_destination);
$json_encoded = file_get_contents($json_encoded_destination);
$my_array1 = unserialize($serialized);
$my_array2 = json_decode($json_encoded);