• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:POSTメソッドの最大容量について)

POSTメソッドの最大容量について

Lchan0211bの回答

回答No.4

No.2です。 PQerrorMessageでエラーメッセージを取得したのなら、 PostgreSQLがDBオープン処理でエラーを検出したということですよね。 私だったら、数が多くなるとエラーになるということは、 そのDBオープンに対するクローズ処理がちゃんと行われているかを 疑います。 PostgreSQLを扱うコーディングはしたことはないのですが、 http://www.postgresql.jp/document/8.1/html/libpq-example.html によると、PQconnectdbに対してPQfinishを発行することで 接続を閉じるようですが、ちゃんとPQfinishが正しいパラメータで 発行されていることは確認しているのでしょうか? 特に今回のケースは、GetPrivateProfileStringで取得した値が nullになるというバグを内在したままの動作ですので、もしかすると スタック破壊等、なんらかのメモリ破壊を起こしたまま動作していて、 一見正しくPQfinishを発行したように見えていて、実はその発行パラメータ の中身が破壊された状態でPQfinishを呼び出していて、PQfinishがエラーに なっている(クローズできてない)可能性もあるのではないかと思いました。 PQfinish自体に戻り値はないようですが、その結果はPQstatus関数で 確認できるようです。確認してなければ、そこはちゃんと確認した方が よいと思います。 そもそも、最初の状況説明がよくわかってないのですが、 「テーブルの1行内にpostメソッドが8個ある」というのは、 テーブルの1行内にpostメソッドを発行するボタンが8個あって、 1回のボタンクリックに対して1回のpostメソッドが実行されると いうことでしょうか? それとも、テーブルの1行にボタン1個で、javascript等で 制御して1回のボタンクリックに対して8回のpostメソッドが 実行されるいうことでしょうか? 後者であれば、1クリックで処理するpostメソッドの数が関係する のはわかりますが、前者であれば、1クリックで処理するpostメソッドは 1つなので、postメソッドの数は一見関係ないように思えます。 前者の構造なのに、それでも説明されているような状況が起きているので あれば、postメソッドの処理の問題ではなく、その前のテーブル 出力処理(200行のテーブルの各行に8個のpostメソッドボタンを 配置するHTMLデータ出力処理)時に、メモリ破壊等なんらかの問題があって、 後続のpostメソッド処理に影響を与えているのかもしれないなと思いました。 質問を継続するようであれば、postメソッドとボタンクリックの関係も 補足してください。

jg1wjz
質問者

お礼

Lchan0211b さん、ありがとうございます。 事前のDBオープンに対するクローズ処理はちゃんと行われていますが、 PQstatus関数で確認はしていないので、やってみます。 ただ、他の処理では問題なく普通に処理できています。 問題は、件数が多いときだけ・・・発生しているのです。 件数が多くても、postデータを取得しないボタン処理は当然 正常に動きます。 ###「テーブルの1行内にpostメソッドが8個ある」というのは、 すみません、言葉足らずでした。 1行内に、postで渡せる情報(id)やチェックボックスがたくさんあります。 言葉を変更させて書かせていただきますが、テーブルの各セルに、 id1=xxx id2=xxx id3=xxx □見る □聞く □送る □受け取る □終わる... 等があります。 で、tableの外に複数のボタンがあり、 ・「見る」と「聞く」の処理を行うボタン (以後、Aボタン) ・「送る」と「受け取る」の処理を行うボタン(以後、Bボタン) ・「終わる」の処理を行うボタン(以後、Cボタン) 等があり、 Aボタンをクリックした場合、hidden項目に処理種別などをセットして、 submitしています。で、exeが動き、 チェックされている情報を受け取り、別プロセスに「見る要求」か 「聞く」要求を出すだけの処理を行います。 Bボタンも同じです。 Cボタンは、id1、id2、id3の情報とともに別プロセスに「終わる要求」を出すだけの処理を行います。 処理的には単純な処理です。 別プロセスに渡す方法は POSTデータをパラメータ渡しでCreateProsessを実行しています。 実際には、1行内の意味として上記の情報(checkbox)がない行も有り、 その行には別セルに □更新 のようなpost があります。 で、今までは □更新 の行だとしても 全て(見る聞く・・・)の情報を表示していました。 情報が無い場合はhidden項目にして。 で、今回、「更新」の行に「見る」「聞く」などの情報は不要のため hiddenで表示している項目を全て削除してみました。 逆に、「見る」などの情報がある行は「更新」は不要なので削除しました。 そうしたところ、 200件でもうまく処理ができたのです。 何故GetPrivate・・・が正しく処理できないのか、 未だに原因不明です。 引き続きまして、よろしくお願いいたします。

関連するQ&A

  • POSTメソッドで処理を分岐させるとCGI.pmの動きがおかしくなります?

    いつもお世話になっています 複数のチェックボックスのデータを、取得しいので CGI.pmライブラリの利用を考えました、プログラムの流れとしてはボタンを押したら チェックを入れた項目だけをコンソールに出力させたいのですが、 POSTメソッドでmode及びsctionに変数をセットしてやり、 サーバーに投げてやり、その値により 処理を分岐させたいのですが(データ追加処理とデータ出力処理に振り分ける) 所が、CGI.pmライブラリを利用すると、処理が行われません因みに #use CGI; #$q = new CGI; としてコメントアウトすると、分岐処理が行えますが、当然チェックした項目の出力はできません どこかおかしな所が在りますでしょうか、宜しく御教授お願いいたします。 コードが長くなってしまったので、下記のサーバーにアップしてあります http://www.geocities.jp/linux_rh_penguin/cgi.txt 申し訳ございませんが一読、宜しくお願いいたします。

  • フォームからPOST、ブラウザで結果を受ける

    フォームのテキストボックスに検索語を入れて、ボタンを押すと、 その結果を既定のブラウザで表示させたいです。 調べると、フォームがpostをして、「フォームがその結果を受け取る」というのは、 よく見るのですが、フォームがPOSTして、ブラウザが開いてサーバから返ってきた結果を 表示するというのはできるのでしょうか? 一度、ブラウザを立ち上げてそこからPOSTさせているというテクニックなどを 使っているのでしょうか? 例で言えば、一つのテキストボックス、一つのボタンで、 testと文字を入れて、ボタンを押すと、何かしらのPOST処理が行われて、 ブラウザが開いてgoogleの検索結果が表示される。 このような事をしたいのです、 なお、検索語は数字のみなので、2バイト文字は使いません。 よろしくお願いします。

  • PerlでPOSTを受け取るとタイムアウトになる

    PerlでPOSTを受け取るようになっているのですが あるサーバーでは正常に動作するのに、 あるサーバーではいつまでたっても画面が推移せず、結局タイムアウトになってしまいます 何故か、POSTをGETに変えると正常に動作するようになりますが、 そのCGIの使用目的上、GETの文字数制限が気になり、GETは使えません ちなみに、どちらのサーバーもWindowsで、 サーバーソフトウェアは、 動くほうは、ローカル環境で、ANHTTPDをを使っています。 動かないほうは、LAN上のサーバーで、04WEBServerです なぜこのようなことになってしまうのか 原因と解決策を教えていただけないでしょうか。 よろしくお願いします

  • WindowsアプリにPOSTのパラメータを渡す

    WebフォームからPOSTメソッドで送信したパラメータを、.NETのスマートクライアントに引き渡す方法を考えています。 ノータッチデプロイメントのスマートクライアントはどうやらクエリストリングを受け取ることはできるようですがPOSTが受け取れません。 現在試しているのはいったん、クエリストリングをASP.NETで受け取り、クエリストリングに変換してスマートクラインアントのページに転送するやりかたです。 この転送をサーバ内で処理しようとする(つまりServer.Transferを用いる)とブラウザはダウンロードされるのが.exeだとは気づかすテキストとして扱ってしまいます。Response.Ridirectを用いるとうまくいくのですが、これは結局クライアントがGETメソッドを投げてしまうので、できれば避けたい状況です。 なにかいい方法はないでしょうか?

  • SSIでPOSTデータを受け取りたい

    ○○.shtml中で <!--#exec cmd="××.cgi" --> としてcgiを実行しています(Perl) 表示は問題なくされています。 ここでフォームボタンを作りPOSTで同一の○○.shtmlファイルにデータを送りその中の××.cgiでデータを受信しその結果を表示させたいのですが、どうすればいいのでしょうか。 <form action="○○.shtml" method="POST"> ~中略~ <input type=submit value="送信"></form> こんな感じですと当然ながら○○.shtmlそのものはデータを処理しませんので、表示できません。 cgiに直接POSTでデータを送れば当然ながら○○.shtmlは関係ない世界になってしまいます。 試しに○○.shtmlへPOST送信をしてみても Method Not Allowed The requested method POST is not allowed for the URL /××/△△/○○.shtml. と表示されます。 どなたかご存じの方解決方法を教えてください。 よろしくお願いします。

    • 締切済み
    • CGI
  • CGI:method="post"でもGETになる

    CGIで標準入力によりフォームデータを取得できないため、環境変数%ENV内の値を 調べましたところ、入力フォーム(html)のformタグでmethod="POST"と明示しているにも 拘らず、REQUEST_METHODの値がGETになっており、POST用のCONTENT_LENGTHも GET用のQUERY_STRINGも共に空になっております。 htmlでmethod="GET"と指定した場合には、REQUEST_METHODの値は正しくGETになり QUERY_STRINGからフォームデータを取得できます。 同じCGIをPC上のApache2.4でテストした結果、REQUEST_METHODはhtmlのmethod=~で 指定した通り正しくPOSTまたはGETとなり、それぞれフォームデータを 取得できることを確認いたしております。 この点についてプロバイダに問合せいたしましたが、サポート対象外ということで、 回答を得ることができませんでした。 このような現象の原因について、お心当たりのある方がおられましたら、 ご教示いただけないでしょうか、お伺いいたします。 (1)ホスト動作環境 a.CGIサーバ:Apache b. perl 5.10系 (2)PC動作環境 a.OS: Windows 7 b.ブラウザ: Internet Eexplorer 11 c.CGIサーバ: Apache 2.4 d. Activeperl 5.20

    • 締切済み
    • CGI
  • コマンドラインでGET or POSTできますか?

    ふとしたことで、cgiからcgiを呼び出す必要に迫られてしまいました。そこで、呼び出す側はsystem()でやるとして、引数はどのように渡したらいいのでしょうか。 ブラウザでは、メソッド指定で呼び出せますが、コマンドラインでgetまたはpostで渡す方法というのはありますか? /hoge.cgi?name=value というのをPOSTでやりたくて、 $tmp = "name=value"; system("echo $tmp | perl hoge.cgi"); とか試して爆沈しました...(汗

    • ベストアンサー
    • Perl
  • ブラウザとCGIアプリの関係?!

    なんとなく想像はできるものの、正しいかどうか確認させていただきたく 質問させていただきます。 WEBアプリですが、例えば 「ブラウザの処理実行ボタン」クリック→「CGIアプリ」→「結果表示」 のような流れだったとして、 処理実行ボタンをクリックしてすぐにブラウザを閉じた場合、CGIアプリはどこまで処理が行えるのでしょうか? ※CGIアプリの処理はブラウザを閉じるまでの時間よりは長いとした解釈でお願いします。 CGIアプリがreturnで抜けるまで、ブラウザはなくても処理は行ってから終了。 また、 returnの前にブラウザに出力していたら、(ブラウザは無いわけで)returnの前にCGIアプリは終了してしまう。→処理途中で終わってしまうことがありえる よろしくお願いします。 わかりづらかったら、申し訳ありません。

    • ベストアンサー
    • CGI
  • CGIでGETで送信するパラメータの最大長が知りたいのです。

    CGIでGETで送信するパラメータの最大長が知りたいのです。 ブラウザ(クライアント)毎に違うのでしょうか、 それとも、CGIはPerlを使っているのですが、サーバー側の仕様になるのでしょうか? あと、index.cgi[ここからパラメータとして扱われる??? ?, &もパラメータサイズに含まれるのでしょうか? 結構長いパラメータをGETで送信しないといけなくて、たとえば携帯やPDA(ザウルスSL-C860)など大丈夫かなと心配しています。 POSTは無制限でしたよね? でも、今回は必ずGETでないといけませんので・・・

    • 締切済み
    • CGI
  • Rubyでnet::httpを用いてPOSTする

    今晩わ。 RubyでNet::HTTPをもちいてPOST送信する際の処理について 質問です。 Net::HTTPクラスのインスタンスメソッドのpostメソッドを用いて送信する場合 送信内容を # version 1.2 (Ruby 1.8.x or later) response = http.post('/cgi-bin/search.rb', 'query=subject&target=ruby') 上記のように、引数に渡していると思います。 このとき、値の中にパラメータのデリミタと同じ&を入れたい場合どうしたらいいのでしょうか? 例えば query=subject&target=ruby&PHP のような感じでvalueとして&を渡す場合です。 Net**HTTP::Postクラスのrequestメソッドを用いてハッシュとして渡した時は問題なかったのですが、上記のpostメソッドの時がPOSTされた値を取得するときにキチンと取得できませんでした。これはなにか対処方法があるのでしょうか? ご教授ください。 おねがいします。

    • ベストアンサー
    • Ruby