【发布时间】:2016-11-04 18:36:37
【问题描述】:
我需要将一些数据从 PHP 服务器发送到 Node 服务器。
这是我目前在 PHP 方面的简化版本:
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$result = socket_connect($socket, '127.0.0.1', '3000');
socket_write($socket, "Hello World", 11);
socket_close($socket);
运行此代码成功将消息发送到我的节点服务器并输出。
但是,我需要将多个消息发送回套接字。我实际上需要发送数千个回复。但是,如果我要在这样的循环中调用 socket_write() 函数:
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$result = socket_connect($socket, '127.0.0.1', '3000');
for($i=0;$i<1000;$i++){
socket_write($socket, "Hello World", 11);
}
socket_close($socket);
它似乎将所有数据附加在一起并在脚本末尾一次性发送。我需要实时发回数据。有什么办法可以在 PHP 中做到这一点?
【问题讨论】:
-
你的socket成功发送到哪里?如何确保资源可用?发送,取一条成功的消息,再次发送。如果您不需要答案,为什么要使用 socket ?用作静态文件。
-
@dsgdfg 我不需要收到节点服务器收到数据的确认。如果与套接字的连接失败,我会抛出异常
-
@dsgdfg 你认为我应该让节点服务器返回成功响应吗?也许这是我告诉 PHP 进入下一个循环迭代很酷的唯一方式