2

我需要在 PHP 中建立一个持久的套接字连接,但不知道如何实现。目前,当我发送 SMS 消息时,我 a)打开套接字连接 b)发送消息(通过 SMS/SMPP)和 c)关闭套接字连接

但是我不需要一直打开和关闭连接。相反,我需要

- 2 persistent connections that maintains connectivity to an SMSC (SMS centre) and reconnects when a timeout occurs. 
- One persistent connection for reading SMS and one for sending SMS.
- Automatic restart/recovery (i.e. when memory issues arise)
- Automatic looping to act as listener for incoming events such as receiving incoming delivery receipts and sms messages, as well as 'ping' (enquire link) to keep SMPP connection alive.

更新:想知道是否有人使用以下方法实现了上述目标:https ://github.com/shaneharter/PHP-Daemon

4

1 回答 1

1

函数pfsockopen似乎具有您正在寻找的功能。查看这个问题 - PHP pfsockopen in a session

===

对您的实施的个人观察。我假设 PHP 代码将由传入请求触发,而在所有其他时间,SMPP 客户端将处于非活动状态。这可能不太适合 SMPP,原因如下:

  • SMPP 客户端需要为他们从 SMSC 收到的所有入站 PDU 发回响应 PDU。
  • 这些 PDU 之一是 enquire_link,用于保持连接处于活动状态。如果 SMPP 客户端未能返回 enquire_link_resp PDU,则连接将被丢弃。你可能会体验到更多这些。使用pfsockopen不能解决这个问题。
  • 如果您想提供交货确认,SMPP 客户端必须响应 SMSC。
  • 如果 SMPP 客户端未能为它收到的 SMSC 的 PDU 发送响应 PDU(如果它从管道中读取字节),则 SMSC 可能会重新发送其中一些 PDU。这会带来在 SMPP 客户端计算机上创建不必要的命中的可能风险。
于 2013-03-05T19:44:59.880 回答