想象一下 2 个应用程序在同一台服务器上使用不同的 mysql 数据库运行。我需要一种在两个应用程序之间交换数据的方法。一个应用程序无权访问另一个应用程序的数据库。交换只是后端相关(自动的东西),不需要用户交互。
使用 php 执行此操作的最佳和最安全的方法是什么?
您可以使用命名管道——它们非常适合进程间通信。
http://my.opera.com/zomg/blog/2007/08/29/php-and-named-pipes
您可以在交互式 php 中尝试一下:
Davids-MacBook-Air:~ dearlbry$ php -a
Interactive shell
php > posix_mkfifo("test-pipe", 0644);
php > $pipe = fopen('test-pipe','r+');
php > print fgets($pipe);
让它坐在那里等待,然后打开另一个终端:
Davids-MacBook-Air:~ dearlbry$ php -a
Interactive shell
php > $pipe = fopen('test-pipe','r+');
php > fwrite($pipe, "Hello World\n");
php > fclose($pipe);
观看第一个过程中出现的“Hello World”。确保输入“\n”,因为管道被缓冲并且换行符发出刷新它的信号。
您可以使用一个RESTful API,其中一个应用程序可以向另一个应用程序 POST 和 GET 数据。
// From application2.com
$id = $curl->post('http://application1.com/users/save/', array(
'name' => 'Matt',
'bio' => 'I am a person.'
));
// $id is generated from a DB insert
$user = $curl->post('http://application1.com/users/bio/', array(
'id' => $id
));
// $user contains an array or object of information about Matt