0

私は現在、ウェブフロントエンドを使用して記事を編集するためのロック/ロック解除機能に取り組んでいます。編集後、ブラウザを閉じた後、またはページを離れた後に記事のロックを解除するための信頼できる手法として、次の概念を開発しました。

  1. 編集ページへのアクセス時に記事をロックする
  2. ロック解除アクションにタイムアウトなしで AJAX 要求をすぐに送信する

ロック解除アクションには次のコードがあります。ajax リクエストがキャンセルされるまで何もしないはずです。

ignore_user_abort(true);
set_time_limit(0);

while (!connection_aborted()) {

    usleep(100000);
}

// do database operations to unlock the article

しかし、ajaxリクエストがieによってキャンセルされた後。ページを離れても、while ループから離れることはありません。中断された接続をテストするためにこれも試しました:

while (connection_status() === CONNECTION_NORMAL)

しかし、同じ結果で、ループを離れることはありません。

4

1 に答える 1

0

PHPマニュアルからの引用

PHP は、クライアントに情報を送信しようとするまで、ユーザーが接続を中止したことを検出しません。単純に echo ステートメントを使用しても、情報が送信されるとは限りません。flush() を参照してください。

したがって、while ループでは、クライアントにダミー データを送信する必要があります。

ignore_user_abort(true);
set_time_limit(0);

while (!connection_aborted()) {
    echo "null"; @flush(); @ob_flush();
    usleep(100000);
}

// do database operations to unlock the article
于 2012-09-17T12:54:47.307 に答える