我发现了这个SMPP Transceiver实现:
http://sourceforge.net/projects/php-smppv3-4/files/
我使用smpp_transceiver.php
的方式如下:
档案send.php
require_once "smpp_transceiver.php";
...
// Open socket
$tx = new SMPP('SOME IP HERE', $port); // (1)
$tx->debug = false;
$tx->system_type = $systemType;
$tx->addr_npi = 1;
// Login as transmitter
$bindResult = $tx->bindTransmitter($username, $password);
$tx->sms_source_addr_npi = 1;
$tx->sms_source_addr_ton = 0;
$tx->sms_dest_addr_ton = 0;
$tx->sms_dest_addr_npi = 1;
// Send SMS
$sendResult = $tx->sendSMS($from, $to, $msg);
// Close socket
$tx->close(); // (2)
$state2 = $tx->state;
// Delete object
unset($tx);
非常简单的问题:
可以不断打开(1)和关闭(2)插座吗?
此send.php
应该充当网络服务
所以我会连续多次打电话:
http://...../send.php?mobile=......&body=hey
http://...../send.php?mobile=......&body=blah
http://...../send.php?mobile=......&body=zort
http://...../send.php?mobile=......&body=troz
我被告知SMPP连接应该保持活着,这显然不会发生在这里。
所以,还有两个问题:
如何保持连接存活?鉴于这是PHP,smpp_transceiver.php
是非静态类。我希望每次调用send.php都使用相同的套接字连接。
如果以前的事情不可能,我应该对smpp_transceiver.php
实施某种同步锁(o)吗?
答案 0 :(得分:0)
你应该尽可能保持连接的存在,但这也是一个经常出现频率的问题。
如果“频繁”是一分钟几次,那么,它不是世界末日而且继续。 如果“频繁”是每秒几次,那么您可能想要为实际的SMPP部分寻求另一种方法。对于需要长时间保持活动的服务,PHP不是一个很好的选择。试试python,node或ruby。