1

Ozeki SMS サーバー経由で PHP コードを使用して SMS を送信しようとしています。Ozeki が提供するインターフェイスを使用して、直接 SMS を適切に送信できます。しかし、この PHP コードは、私が期待したようには機能しません。に接続しました: 127.0.0.1:9333(admin)


Fatal error: Maximum execution time of 30 seconds exceeded in C:\wamp\...\sendsms.php on line 32
どちらがコードを持っているかを示しています$greeting = trim(fgets($ozekiSMSSocket,1000));
何が間違っているのでしょうか?

これはコードです:

<?php 
include("sendsms.php");
$credits = sms_connect('127.0.0.1','9333','admin'); 

if ($credits>1) {
echo "Sending messages...<br>";
sms_send('+36203105366','Send SMS messages from a PHP client!');
}

echo "Receiving messages...<br>";
$inbox = sms_receive();
echo "$inbox";

sms_disconnect();
?>

これはコードですsendsms.php

<?php
$ozekiSMSSocket = '';
$ozekiSMSCredit = 0;
function sms_connect($serverIP,$serverPort,$account) { 
global $ozekiSMSSocket;
global $ozekiSMSCredit;
$ret = true;
$ozekiSMSSocket = fsockopen($serverIP, $serverPort, $errno, $errstr, "60"); 

if ($errno) {
    echo $errstr;
    $ozekiSMSCredit = 0;
}

//$greeting = fgets($ozekiSMSSocket,1000);

$greeting = trim(fgets($ozekiSMSSocket,1000));
$randomstring = trim(fgets($ozekiSMSSocket,1000));

if (strlen($randomstring)) {
    $reply = md5($randomstring.$account).chr(13).chr(10);
    fputs($ozekiSMSSocket,$reply);
    $ozekiSMSCredit = trim(fgets($ozekiSMSSocket,1000));
}
return $ozekiSMSCredit;
}

function sms_send($msisdn,$msg) {
global $ozekiSMSSocket;
global $ozekiSMSCredit;
if ((isset($ozekiSMSSocket)) && ($ozekiSMSCredit>0)) {
    $msg=$msisdn.' '.$msg.chr(13).chr(10);
    fputs($ozekiSMSSocket,$msg);
} else {
    $ozekiSMSCredit = 0;
}
return $ozekiSMSCredit;
}

function sms_receive() {
global $ozekiSMSSocket;
$received = '';
if (isset($ozekiSMSSocket)) {
    $msg='OZEKI_INBOX'.chr(13).chr(10).'GET'.chr(13).chr(10);
    fputs($ozekiSMSSocket,$msg);
    $count = trim(fgets($ozekiSMSSocket,1000));
    for ($x=0;$x<$count;$x++) {
        $line = fgets($ozekiSMSSocket,1000);
        $received .= trim($line).chr(13).chr(10);
    }
}
return $received;
}

function sms_disconnect() {
global $ozekiSMSSocket;
if (isSet($ozekiSMSSocket)) fclose($ozekiSMSSocket);
}
?>
4

1 に答える 1

1

タイムアウトの理由は、ソケットから 1000 バイトを読み取ろうとしているが、サーバーが何も送信していないためです。

なぜ「オゼキのSMSサーバー」が何も送信しないのか、私にはわかりません。ただし、接続直後に挨拶メッセージが本当に必要な場合は、ドキュメントを確認する必要があります. 通常、クライアントはリクエストを送信して通信を開始することを期待します。

于 2015-05-17T18:08:36.693 に答える