我知道socket和线程在php中很糟糕...我只是想把我的php文件和socket连接到我的服务器上。 问题是我从socket_read得到什么(没有数据没有错误只返回一个空字符串)我认为pthread自动杀死套接字。 现在我不需要线程,但我需要保留它以便以后使用它。
我的代码:
<?php
class test extends Threaded
{
/*
*/
public function __construct($ip, $port, $debug = false)
{
$this->debug = $debug;
$this->ip = $ip;
$this->port = $port;
}
/*
*/
public function __destruct()
{
socket_close($this->connect);
}
/*
*/
public function start()
{
if (!($this->connect = socket_create(AF_INET, SOCK_STREAM, SOL_TCP))) {
throw new Exception('SOCKET_CREATE');
}
if (!socket_set_option($this->connect, SOL_SOCKET, SO_RCVTIMEO, array('sec' => 5, 'usec' => 0))) {
throw new Exception('SOCKET_SET_OPTION');
}
if (!socket_connect($this->connect, $this->ip, $this->port)) {
throw new Exception('SOCKET_CONNECT');
}
$getMsg = socket_read($this->connect, 255);
echo $getMsg;
}
}
你知道它是如何起作用的吗?
编辑:我今天再次尝试,我的脚本有效,我不明白有时候它的工作时间不行.... EDIT2:我将我的服务器文件脚本复制到另一台具有更多流量的服务器,它可以工作!那么为什么它在服务器2上运行而不在服务器1上运行?