在多个页面上使用套接字

时间:2015-05-29 09:41:23

标签: php sockets session

我正在开发一个通过套接字发送数据的php应用程序。在我的主页面上,我建立了与客户端的联系,我想从网络应用程序的另一个页面发送数据..但我不知道该怎么做。

我目前正在尝试使用$ _SESSION变量[闭上眼睛这不太漂亮]

主页:

$socket = socket_create(AF_INET, SOCK_STREAM, 0);
$result = socket_bind($socket, $host, $port);
$result = socket_listen($socket, 3);
$_SESSION['mySocket'] = socket_accept($socket) ;
socket_read($_SESSION['mySocket'], 1024);

第二页:

socket_write($_SESSION['mySocket'], "myText", 6) ;

但它不起作用,因为$_SESSION['mySocket']不再是第二页上的资源(只是0)...如果我在主页面上使用write命令它工作正常,但不是在另一页上。你知道为什么吗?有没有比使用$ _SESSION变量更清晰的方法(肯定有)?

编辑:也许我的真正问题是:套接字何时关闭(如果我没有要求)?

1 个答案:

答案 0 :(得分:0)

套接字实际上仅用于CLI编程,并且您没有可用的$_SESSION对象。

此外,您首先想要共享套接字是没有意义的,因为套接字是IPC的一种方式。如果你在脚本之间传递套接字句柄,那么套接字的用途是什么?

如果您尝试在一个脚本和另一个脚本之间进行通信,则需要让第一个脚本侦听套接字(就像您所做的那样),然后创建一个无限循环,脚本会在其中侦听请求。

在第二个脚本中,您连接到同一个套接字,但不要听它。

所以我想你真正想要做的是拥有第三个文件config.php:     

并在两个脚本中使用     

如果您想在网络上的计算机之间进行通信,您将需要稍后对其进行扩展以使$host可以独立配置。

总而言之,这是非常高级的编程,您需要阅读更多关于套接字的内容。如果我没有吓到你,你可以阅读一些示例代码,因为它是shown in the PHP manual