首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在两个以上的php文件中使用相同的资源(如创建的socket)

问在两个以上的php文件中使用相同的资源(如创建的socket)
EN

Stack Overflow用户
提问于 2013-02-08 09:34:55
回答 1查看 709关注 0票数 1

我用php(socketsever.php)写了一个非常基本的socket服务器。我使用nohup让它在后台运行。我想在其他页面中使用在socketserver.php中创建的套接字资源。因此,当有人浏览某个页面时,服务器将通过socket发送一些内容。我找不到在其他页面中使用socketserver中套接字资源的方法。

EN

回答 1

Stack Overflow用户

发布于 2013-02-08 11:27:28

我相信你要找的是SO_REUSEADDR。这将允许多个连接到php脚本正在侦听的端口。您只需在执行socket_create之后设置此套接字选项即可完成此操作。

来自php.net的示例

代码语言:javascript
复制
<?php
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

if (!is_resource($socket)) {
    echo 'Unable to create socket: '. socket_strerror(socket_last_error()) . PHP_EOL;
}

if (!socket_set_option($socket, SOL_SOCKET, SO_REUSEADDR, 1)) {
    echo 'Unable to set option on socket: '. socket_strerror(socket_last_error()) . PHP_EOL;
}

if (!socket_bind($socket, '127.0.0.1', 1223)) {
    echo 'Unable to bind socket: '. socket_strerror(socket_last_error()) . PHP_EOL;
}

$rval = socket_get_option($socket, SOL_SOCKET, SO_REUSEADDR);

if ($rval === false) {
    echo 'Unable to get socket option: '. socket_strerror(socket_last_error()) . PHP_EOL;
} else if ($rval !== 0) {
    echo 'SO_REUSEADDR is set on socket !' . PHP_EOL;
}
?>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14764342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档