在PHP中通过fsockopen()传递资源
我有两台服务器。服务器A拥有所有数据库。服务器B如何使用在PHP中通过fsockopen()传递资源,php,fsockopen,Php,Fsockopen,我有两台服务器。服务器A拥有所有数据库。服务器B如何使用fsockopen()查询服务器A的数据库并接收结果? 目前,我只能通过套接字传递实际文本(即,如果服务器A的php代码打印出echo)中的内容)。如何在此打开的套接字中传递查询结果(资源)?您不能通过fsockopen传递,因为fwrite/read会将数据转换为(二进制)字符串。见: 转化为资源 由于资源变量包含打开的文件、数据库连接、图像画布区域等的特殊处理程序,因此转换为资源毫无意义 将资源转换为其他资源(例如字符串)也是如此。如果
fsockopen()
查询服务器A的数据库并接收结果?
目前,我只能通过套接字传递实际文本(即,如果服务器A的php代码打印出echo
)中的内容)。如何在此打开的套接字中传递查询结果(资源)?您不能通过fsockopen传递,因为fwrite/read会将数据转换为(二进制)字符串。见:
转化为资源
由于资源变量包含打开的文件、数据库连接、图像画布区域等的特殊处理程序,因此转换为资源毫无意义
将资源转换为其他资源(例如字符串)也是如此。如果使用fsockopen是与服务器B的数据库通信的唯一方式,则可以序列化查询结果或将其编码为JSON格式并将其写入套接字 是否不可能仅从服务器A授予对mysql服务器的只读访问权限,以便您可以直接查询?否则,服务将是fsockopen的一个很好的替代方案
如上所述,您不能通过套接字传递资源,因为它在服务器上无论如何都没有任何意义。如果您试图通过套接字传递它,它可能会返回一个字符串(即Resource#1)您在做什么?只需允许远程mysql,让数据库服务器完成它的工作。我如何使用REST传递资源?您不能通过任何方式传递资源;它仅在脚本生命周期内创建的php脚本中有效。您需要想出一种与服务器A的数据库通信的替代方法。让我给您一块比萨饼。等等,我不能用数字传输,对吗?我只发送一张照片;这也很好,对吧?更严重的是,通过网络发送资源就像发送本地路径名一样。另一台计算机可能通过访问文件来查找文件,但它与您计算机上的文件不同。