我正在编写一个收集一些指标的脚本,并将删节版本发送到另一台服务器;我正在使用下面的内容:
<?php
$statsHost="stats0";
$statsPort=2003;
...
$size = strlen( $packet );
echo "The packet is [ " . $size . "b ].";
$sock = socket_create( AF_INET, SOCK_STREAM, SOL_TCP );
socket_sendto( $sock, $packet, $size, 0, $statsHost, $statsPort);
socket_close( $sock );
即使使用the most basic socketing example,我也无法建立与服务器的成功连接:
PHP警告:socket_sendto():无法写入套接字[32]:第37行的stats.php中的管道损坏
管道损坏通常表示服务器端存在问题 - 看起来按预期工作,两者或以下都没有连接到服务器的问题,现有的客户端连接都没有。
echo "a.b 1 1" | nc $statsHost $statsPort
# and
telnet $statsHost $statsPort
可能有一些php / httpd配置问题阻止我这样做吗?
SELinux被禁用; firewalld已禁用,我尝试使用IP地址而不是主机名,我尝试连接到本地端口,所有都有相同的问题。
PHP版本信息
PHP 5.4.16 (cli) (built: Nov 6 2016 00:29:02)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
答案 0 :(得分:2)
感谢Chris让我指出了正确的方向。
我不确定这是否是我正在运行的PHP版本的问题,但是
向套接字发送消息,无论是否已连接
这似乎是错误的。
为了使这项工作正常,我必须明确调用
Periodindex