Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中通过fsockopen()传递资源_Php_Fsockopen - Fatal编程技术网

在PHP中通过fsockopen()传递资源

在PHP中通过fsockopen()传递资源,php,fsockopen,Php,Fsockopen,我有两台服务器。服务器A拥有所有数据库。服务器B如何使用fsockopen()查询服务器A的数据库并接收结果? 目前,我只能通过套接字传递实际文本(即,如果服务器A的php代码打印出echo)中的内容)。如何在此打开的套接字中传递查询结果(资源)?您不能通过fsockopen传递,因为fwrite/read会将数据转换为(二进制)字符串。见: 转化为资源 由于资源变量包含打开的文件、数据库连接、图像画布区域等的特殊处理程序,因此转换为资源毫无意义 将资源转换为其他资源(例如字符串)也是如此。如果

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

您不能通过fsockopen传递,因为fwrite/read会将数据转换为(二进制)字符串。见:

转化为资源

由于资源变量包含打开的文件、数据库连接、图像画布区域等的特殊处理程序,因此转换为资源毫无意义


将资源转换为其他资源(例如字符串)也是如此。

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

是否不可能仅从服务器A授予对mysql服务器的只读访问权限,以便您可以直接查询?否则,服务将是fsockopen的一个很好的替代方案


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

您在做什么?只需允许远程mysql,让数据库服务器完成它的工作。

我如何使用REST传递资源?您不能通过任何方式传递资源;它仅在脚本生命周期内创建的php脚本中有效。您需要想出一种与服务器A的数据库通信的替代方法。让我给您一块比萨饼。等等,我不能用数字传输,对吗?我只发送一张照片;这也很好,对吧?更严重的是,通过网络发送资源就像发送本地路径名一样。另一台计算机可能通过访问文件来查找文件,但它与您计算机上的文件不同。