2011-12-27 83 views
0

我有两台服务器。服务器A拥有所有数据库。服务器B如何查询服务器A的数据库并通过fsockopen()接收结果? 目前,我只能通过套接字传递实际文本(即,如果服务器A的php代码打印出如echo中的内容)。我如何通过这个打开的套接字中的查询结果(资源)?通过PHP中的fsockopen()传递资源

+0

让我给你这片披萨。等等,我不能以数字方式传输它,我可以吗?我只会发一张照片;这同样好,对吧? – outis 2011-12-28 04:04:06

+1

更严重的是,通过网络发送资源就像发送本地路径名一样。另一台计算机可能通过访问它来找到一个文件,但它不会与计算机上的文件相同。 – outis 2011-12-28 04:06:45

回答

1

如果使用fsockopen是您能够与服务器B的数据库进行通信的唯一方式,则序列化查询结果或将其编码为JSON格式并将它们写入套接字是可能的。

是不是可以从服务器A授予对mysql服务器的只读访问权限,所以您可以直接查询?否则,REST服务将是fsockopen的一个很好的选择。

如上所述,您无法通过套接字传递资源,因为它无论如何对服务器A都没有任何意义。如果您试图通过套接字传递它可能会返回一个字符串(即资源#1)

+0

我将如何使用REST传递资源? – YWSW 2011-12-27 20:20:54

+1

您无法通过任何方式传递资源;它只在脚本内有效,它是在脚本生命周期中创建的。您将需要提出一个备用方法来从服务器A与数据库进行通信。 – drew010 2011-12-27 20:27:20

1

您无法通过fsockopen传递PHP resource type*­Docs*,因为fwrite/read会将数据转换为(二进制)字符串。请参阅:

转换为资源

由于资源变量举行特别处理程序打开文件,数据库连接,图形画布区域等,转换为资源没有意义。

将资源转换成别的东西也是如此,例如,一个字符串。

0

你在做什么?只需允许远程mysql并让数据库服务器完成其工作。