0

这是我第一次弄乱套接字,并阅读了许多不适合新手的引文。

所以问题是我正在使用php smpp 库 进行发送SMS,它工作正常,但是在发送两到三个 SMS 后发送失败并出现以下警告

Warning: stream_socket_sendto() [function.stream-socket-sendto]: An existing connection was forcibly closed by the remote host'为了让它再次工作,我需要重新启动 apache

以下是抛出异常的写入函数

public function write($buf) {
    $null = null;
    $write = array($this->handle_);

    // keep writing until all the data has been written
    while (strlen($buf) > 0) {
        // wait for stream to become available for writing
        $writable = @stream_select($null, $write, $null, $this->sendTimeoutSec_, $this->sendTimeoutUsec_);
        if ($writable > 0) {
            // write buffer to stream
            $written = stream_socket_sendto($this->handle_, $buf);
            if ($written === -1 || $written === false) {
                throw new TTransportException('TSocket: Could not write '.$written.' bytes '.
                $this->host_.':'.$this->port_);
            }
            // determine how much of the buffer is left to write
            $buf = substr($buf, $written);
        } else if ($writable === 0) {
            throw new TTransportException('TSocket: timed out writing '.strlen($buf).' bytes from '.
            $this->host_.':'.$this->port_);
        } else {
            throw new TTransportException('TSocket: Could not write '.strlen($buf).' bytes '.
            $this->host_.':'.$this->port_);
        }
    }
}

请任何人都可以放一些光

4

1 回答 1

0

这是我无法识别/纠正的错误。然后我使用了来自http://www.codeforge.com/read/171085/smpp.php__html的另一个库,它真的救了我。

于 2014-05-29T20:09:39.533 回答