HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
1025
quakhspinetの「netload」を受信が完了するまで待機させるには?4未解決


quak

リンク

2012/10/25(Thu) 21:32:13|NO.50231

結果出力まで数十秒かかるWebプログラムがあったとして、
HSPのnetload(netrequest_getも試しました)でそれを受信しようとすると、必ずエラーが出て失敗します。

ブラウザでは、結果受信が完了するまで待機しますが、HSPは待機しないようです。
このようなWebスクリプトを、完了するまで待たせて正しく取得させたいのですが
どのようにすればよろしいでしょうか?

よろしくお願いします。


netinit neturl "http://localhost/test/" netload "result.php" //...以降結果を表示



この記事に返信する


ANTARES

リンク

2012/10/26(Fri) 11:07:11|NO.50243

 そのURLをブラウザに入力してきちんと表示されますか?
ブラウザで表示できるURLが以下のスクリプトで受信できないということは、
私の環境ではありません。

 localhostの環境がきちんと整っていず、
ブラウザでさえ表示できない状況というのが
いちばんありそうなことです。

 この推測が正しいなら、いちばんありそうなことは、
wwwサーバーが動いていないということです。
もし、そうなら、apacheやanhttpd等をインストールして起動してください。
anhttpdの方が初心者には使いやすいかな?

 なお、wwwサーバーを起動した場合、インターネットにつながっていると、
外部からPCの中身(ドキュメントルート以下のみ)を覗けるということにも
留意してください。

#include "hspinet.as" netinit neturl "http://localhost/test/" netload "result.php" dialog "end" end



quak

リンク

2012/11/23(Fri) 08:16:20|NO.50802

>そのURLをブラウザに入力してきちんと表示されますか?
はい。

>localhostの環境がきちんと整っていず、ブラウザでさえ表示できない状況というのが
HOSTSで127.0.0.1 localhostを設定しているため、それはないと思います。

Web鯖は長年使っていますが、ダウンロードに失敗するのはHSPだけです。
(上記のスクリプトをなでしこで書き換えて実行すると成功します[ダウンロード完了まで待つ])

Apacheのタイムアウトは13秒ぐらいですが、これを数分にするのでしょうか?
そうしないとHSPはnetloadのときに完了まで待たないのでしょうか?



quak

リンク

2012/11/23(Fri) 08:40:26|NO.50803

HSP 3.31
ソースの先頭に#includeではなく以下を利用しています

#ifndef __hspinet__ #define __hspinet__ #uselib "hspinet.dll" #func netinit netinit 0 #func netterm netterm $100 #func netexec netexec 1 #func netmode netmode 1 #func netsize netsize 1 #func neterror neterror $202 #func neturl neturl 6 #func netdlname netdlname 6 #func netproxy netproxy 6 #func netagent netagent 6 #func netheader netheader 6 #func netrequest netrequest 6 #func netfileinfo netfileinfo $202 #func netgetv netgetv $202 #func netrequest_get netrequest_get $202 #func netrequest_post netrequest_post $202 #func filecrc filecrc $202 #func filemd5 filemd5 $202 #func varmd5 varmd5 $202 #func nkfcnv nkfcnv $202 #func nkfguess nkfguess $202 #enum INET_MODE_NONE = 0 #enum INET_MODE_READY #enum INET_MODE_REQUEST #enum INET_MODE_REQSEND #enum INET_MODE_DATAWAIT #enum INET_MODE_DATAEND #enum INET_MODE_INFOREQ #enum INET_MODE_INFORECV #enum INET_MODE_FTPREADY #enum INET_MODE_FTPDIR #enum INET_MODE_FTPREAD #enum INET_MODE_FTPWRITE #enum INET_MODE_FTPCMD #enum INET_MODE_FTPRESULT #enum INET_MODE_ERROR #func getenv getenv2 $202 #func getenvprm getenvprm $202 #func getctime getctime $202 #module #deffunc netload str _p1 netrequest@ _p1 repeat netexec@ res if res : break await 50 loop if res > 0 : return neterror@ estr dialog estr//debug!! return #global #endif
↑ダイアログでエラーが出るように。

エラー内容は「無効なURLが指定されました」です。

netload "result.php" を netload "hogehoge.txt" など軽い(転送が早い)ものにすると
成功します。



ANTARES

リンク

2012/11/23(Fri) 21:54:40|NO.50822

 いろいろいじってみたところ、一度だけ再現しました。
そのときは、HSPがサーバーの比較的まれな挙動に対応していず、
エラーと解釈してしまったのではないかと思いましたが、
その後、500サーバーエラーが起きるようになり、
その原因を取り除いた後では再現しなくなりました。

 私の考えが正しいとしても、サーバーの設定で何とかなるのでは
ないかという気がしましたが、厳密には問題を再現できていない以上、
あてにはなりません。しかし、一応、思いついたことを書いてみます。
・サーバーのエラーログを見る
・php.iniのmax_execution_timeをapacheのタイムアウト以下にしてみる

 私には、これ以上できることはないと思いますが、
以下の点を改めれば、ほかの人がレスしてくれるかもしれません。
・情報が少なすぎる上、小出しにしか出さない
・新スレを立てたり、こっちにレスしたり、標準インクルードファイルを
使わないなど、手前勝手な行動が目立つ

 標準インクルードファイルを使わないのは勝手ですが、
質問するにあたって標準インクルードファイルでの動作を確認すればすむ話なのに、
回答者が自分の流儀に合わせることを期待するような態度は
身勝手というほかありません。



ONION software Copyright 1997-2023(c) All rights reserved.