POSTってサーバーにとって高負荷なの?

アバター
MoNoQLoREATOR
記事: 284
登録日時: 14年前
住所: 東京

POSTってサーバーにとって高負荷なの?

投稿記事 by MoNoQLoREATOR » 14年前

とりあえずサイトを移転しました。また弾かれたらどうしよう。ガクガクブルブル(((;´д`;)))

http://www25.atpages.jp/monoqloreator/profile.php

さて、本題なのですが、POSTはサーバーにとって高負荷なのでしょうか?
POSTとGETとの違いは容量の制限がついているか否かくらいだと思っていたのですが違うのでしょうか。

とりあえずPOSTをGETに書き換えてみたのですがコメントが保存されません。
・・・あ、書き換える前も保存されなかったかも(・ω・`;)オイオイ・・・

おかしいですね。他の部分は保存ができていた頃のままで書き換えていないのですが。

アバター
MoNoQLoREATOR
記事: 284
登録日時: 14年前
住所: 東京

Re: POSTってサーバーにとって高負荷なの?

投稿記事 by MoNoQLoREATOR » 14年前

あと、簡単なブラウザーゲームをつくろうと思います。現在ここまでできてます。先は長いです。
http://www25.atpages.jp/monoqloreator/train_input.php

アバター
kimuchi
記事: 163
登録日時: 14年前

RE: POSTってサーバーにとって高負荷なの?

投稿記事 by kimuchi » 14年前

さて、本題なのですが、POSTはサーバーにとって高負荷なのでしょうか?
POSTとGETとの違いは容量の制限がついているか否かくらいだと思っていたのですが違うのでしょうか。
一番違うのはデータの受け渡し方法ではないでしょうか。
POSTは標準入力(基本的には視認できない)に値を入れてサーバーに渡すのに対し、
GETはアドレス内に埋め込まれて渡されます。
→例 http://hoge/hoge.php?u=value

サーバー負荷については聞いたことがありませんが、
セキュリティ的には不正な書き込みを行えるGETよりもPOSTの方が優れているという見方もあります。
(大してセキュリティ強度が上がるわけではないですが)
とりあえずPOSTをGETに書き換えてみたのですがコメントが保存されません。
Ajaxで
xxx.open("POST", "xxx.php");→xxx.open("GET", "xxx.php?u=value");
のようにされていますか?
あとxxx.send(null)とする必要があります。

ブラウザゲームの方ですがやり方が良く分からないです。
最後に編集したユーザー kimuchi on 2011年4月05日(火) 16:36 [ 編集 1 回目 ]

アバター
MoNoQLoREATOR
記事: 284
登録日時: 14年前
住所: 東京

Re: POSTってサーバーにとって高負荷なの?

投稿記事 by MoNoQLoREATOR » 14年前

トラビアン系のブラウザーゲームをプレイされたことがないようですね。トラビアンはおもしろいですよ。でも気をつけていないと夢中になりすぎて廃人になってしまいますが(^^;)


今ページを確認してきたのですが、
訓練中:Infinity体
になってますね。原因は不明です。ちなみにInfinityとは歩兵のことです。
追記:アップロードし直したら何故か直りました。



とりあえず、訓練させたい(増やしたい)兵士の数を入力して「訓練!」ボタンを押せば「訓練中」の数にそれが加算されるはずです。

今後の予定としては、「1体の訓練完了まで残り 」の右ところにカウントダウン表示を作ってそれが0になったら兵士の「現在数」が増えるようにする予定です。

1体の訓練完了まで残り 0:10:35

↑こんな感じ。ちなみに上の例だと残り10分35秒です。
こんな機能を実装する予定ですとか簡単に言ってますが、実はこの処理が非常にめんどくさい。多分ブラウザゲームを作る上で一番めんどくさいです。


まず、訓練のリクエストがあったら、訓練中の人数を確認します。0でなければその時点では何も行いません。0であれば、新たに「訓練開始時刻」をファイルに記憶させる必要があります。PHPにアクセスしてタイムスタンプを取得し、それをファイルに保存させます。タイムスタンプをechoします。

次に、の時点で訓練中の人数を確認します。0であれば何も行いません。0でなければカウントダウンを行う必要があります。テキストファイルにアクセスして「訓練開始時刻」であるタイムスタンプ情報を取得します。つぎに、PHPにアクセスして現在のタイムスタンプを取得します。それをechoします。これで、[「訓練開始時刻」と現在]のタイムスタンプを取得することができたので、
 「訓練開始時刻」のタイムスタンプ から 現在のタイムスタンプ を引きます。するとその差が秒で出てくるので、あらかじめ決めておいた「(兵士一人を増やすのに必要な)訓練時間」で割った商と余りを記憶します。商はそのまま現在の兵士数に加算します。余りは、「1体の訓練完了まで残り 」の部分に出力するときに使います。

最後に、1秒間に1回呼び出される関数をつくります。これは簡単です。以前求めた余りから1を引きます。その答えを
まず3600で割って「時間(hour)」を求めます。
次にその余りを60で割って「分」を求めます。
さらにその余りが秒を表します。
という処理をしてから::で区切って画面に出力します。
また、1を引いたとき0になった場合、「現在の兵士数」を1増やして「訓練中」の数を1減らします。そして「訓練開始時刻」のデータを更新します。
最後に編集したユーザー MoNoQLoREATOR on 2011年4月05日(火) 21:34 [ 編集 3 回目 ]