0

クライアントに電話をかけるサーバーに AJAX 呼び出しを送信したいと考えています。ただし、プロセスを開始する人がブラウザを開いたままにしておく必要はありません。いくつかの調査の後、php の実行を停止せずにブラウザーを切断できるように、通常は php でヘッダーを渡すことができることがわかりました。これは AJAX でも機能しますか? 関連するコードは以下のとおりです。

//jQuery 1.8.10
$('#start').click(function(){
    $.post('/startcalling', {
        'time_limit': 0
    });
});
$('#stop').click(function(){
    $.post('/stopcalling');
});

重要なPHP

function startCalling(){
    echo "starting...";
    header('Connection: close');
    while(getFlagStatus()){
        makeNextCall();
    }
}
function stopCalling(){
    if(!getFlagStatus()){
        $query = "UPDATE cc_flags SET cc_on = 0";
        mysql_query($query);
    }
}

これを CLI コマンドにパッケージ化して目標を達成することもできますが、もっと簡単な方法が必要だと感じています。混乱している場合はお知らせください。編集します。

編集:ユーザーがページを離れた後、php の実行は停止しますか? これはここに当てはまりますか?

4

1 に答える 1

1

ignore_user_abort($bool)の動作が必要なようです。しかし、PHP には通常 30 秒の時間制限があるため、これだけではあまり役に立ちません。set_time_limit($seconds)はおそらくこれに役立ちます。

スクリプトは Web サーバー上で実行され、ユーザーが間違いを犯した場合にスクリプトを強制終了する方法がないことに注意してください。そのため、ユーザーがスクリプトを 10 回生成しないようにチェックを追加することを忘れないでください。特に電話をかけている場合は、実行させてください。

Web サーバーの外部で実行されるサーバー スクリプトを作成することをお勧めします。これにより、デーモンと通信し、その上でジョブを開始/停止できます。単純なソケットで行うのは簡単ではありません。

于 2013-06-18T20:05:59.830 に答える