質問 > 管理機能 > 郵便番号DB登録の不具合? |
管理機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
ramrun |
投稿日時: 2009/6/14 14:21
対応状況: −−−
|
仙人 登録日: 2006/11/3 居住地: 投稿: 789 |
Re: 郵便番号DB登録の不具合? webサーバのタイムアウトって無応答の時間だと思うのですが、順次flushしているかぎり発生しないのでは?
xreaで試した感じでは処理時間が2秒〜7分ぐらいで止まるのを確認しました。 調子がよければ最後まで行くのかもしれませんが、あまり連発しているとxreaを追い出されそうなので(笑)。 コードは以前のものと、チェンジセットのもの両方で試してみて同じような状態です。 ちなみに以前のコードでは登録済みレコードをwhileで読み飛ばしてその分imgを出力しますが、その途中で止まることもあります。 要するにDBは関係ないみたい。 xreaの共有SSL(squid)をやめてhttpで管理画面より確認しても同じような状態。 要するに共有SSLやプロキシも関係ないみたい。 PHPをapacheのモジュール(safe_mode on)で確認しても同じ。 ※ただしこの場合は5分を超えるとmax_execution_timeがきちんと出る。 要するにモジュール版かCGI版かも関係ないみたい。 ためしにwhileの処理をtry catchしても捕まらず。 やはりdestroyは呼ばれておらず。 プロセスが強制的に終了させられている感じ。 負荷が関係するのかとwhile内にsleepを入れてみても変化なし。 xreaではapacheなどのログは見れないのでお手上げです(汗)。 見れても共有だから環境をいじれないけど... とりあえず以前のコードにmbの関数をいれて、while内でbeginして、imgの出力時にcommitすれば中途半端なinsertはされないかと思います。 |
seasoft |
投稿日時: 2009/6/14 16:09
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: 郵便番号DB登録の不具合? > webサーバのタイムアウトって無応答の時間だと思うのですが、順次flushしているかぎり発生しないのでは?
WEB サーバに依存しますが、1レスポンスの経過時間で落とすことが可能だったと思います。 WEB サーバを FTP のような利用をするときに、障害になるケースがあったと思います。 典型的なのは、300秒や600秒で落ちるケースが結構あったと思います。 いずれにしても、現状のメニューをクリックすると勝手に処理が始まるという動作もどうかなと思っていまして、もう少し改善をしようかなと思っていますので、そのときにはWEBサーバのタイムアウトも考慮しようと考えています。
|
ramrun |
投稿日時: 2009/6/14 21:22
対応状況: −−−
|
仙人 登録日: 2006/11/3 居住地: 投稿: 789 |
Re: 郵便番号DB登録の不具合? とりあえず以前の追記と組み合わせてみました。
途中で止まった際はもう一度実行すれば続きからになります。 LC_Page_Admin_Basis_ZipInstall.php
|
kokoko |
投稿日時: 2009/6/15 18:26
対応状況: −−−
|
半人前 登録日: 2009/6/4 居住地: 投稿: 18 |
Re: 郵便番号DB登録の不具合? 沢山のご返信ありがとうございます(^^
シックスコアの一発インストールで使われていた下記のデータと入れ替えれば登録できました(^-^ {zip_install.php} /**************************************/ // {{{ requires require_once("../require.php"); require_once(CLASS_EX_PATH . "page_extends/admin/basis/LC_Page_Admin_Basis_ZipInstall_Ex.php"); ini_set("max_execution_time", 600); // }}} // {{{ generate page $objPage = new LC_Page_Admin_Basis_ZipInstall_Ex(); register_shutdown_function(array($objPage, "destroy")); $objPage->init(); $objPage->process(); /**************************************/ {LC_Page_Admin_Basis_ZipInstall.php} // {{{ requires require_once(CLASS_PATH . "pages/LC_Page.php"); /** CSV ファイルの最大行数 */ define("ZIP_CSV_LINE_MAX", 8192); /** 画像の表示個数 */ define("IMAGE_MAX", 680); /** 郵便番号CSV ファイルのパス */ define("ZIP_CSV_FILE_PATH", DATA_PATH . "downloads/KEN_ALL.CSV"); /** * 郵便番号DB登録 のページクラス. * * @package Page * @author LOCKON CO.,LTD. * @version $Id:LC_Page_Admin_Basis_ZipInstall.php 16741 2007-11-08 00:43:24Z adachi $ */ class LC_Page_Admin_Basis_ZipInstall extends LC_Page { // }}} // {{{ functions /** * Page を初期化する. * * @return void */ function init() { parent::init(); } /** * Page のプロセス. * * @return void */ function process() { $objQuery = new SC_Query(); $objSess = new SC_Session(); // 認証可否の判定 SC_Utils_Ex::sfIsSuccess($objSess); $fp = fopen(ZIP_CSV_FILE_PATH, "r"); $img_path = USER_URL . "packages/" . TEMPLATE_NAME . "/img/"; // 一部のIEは256バイト以上受け取ってから表示を開始する。 for($i = 0; $i < 256; $i++) { print(" "); } print("\n"); $this->myFlush(); if(!$fp) { SC_Utils_Ex::sfErrorHeader(">> " . ZIP_CSV_FILE_PATH . "の取得に失敗しました。"); } else { print("<img src='". $img_path . "install/main_w.jpg'><br>"); $this->myFlush(); // CSVの件数を数える $line = 0; while(!feof($fp)) { fgets($fp, ZIP_CSV_LINE_MAX); $line++; } print("<img src='". $img_path ."install/space_w.gif'>"); $this->myFlush(); // ファイルポインタを戻す fseek($fp, 0); // 画像を一個表示する件数を求める。 $disp_line = intval($line / IMAGE_MAX); // 既に書き込まれたデータを数える $end_cnt = $objQuery->count("mtb_zip"); $cnt = 1; $img_cnt = 0; while (!feof($fp)) { $arrCSV = fgetcsv($fp, ZIP_CSV_LINE_MAX); // すでに書き込まれたデータを飛ばす。 if($cnt > $end_cnt) { $sqlval['code'] = $arrCSV[0]; $sqlval['old_zipcode'] = $arrCSV[1]; $sqlval['zipcode'] = $arrCSV[2]; $sqlval['state_kana'] = $arrCSV[3]; $sqlval['city_kana'] = $arrCSV[4]; $sqlval['town_kana'] = $arrCSV[5]; $sqlval['state'] = $arrCSV[6]; $sqlval['city'] = $arrCSV[7]; $sqlval['town'] = $arrCSV[8]; $sqlval['flg1'] = $arrCSV[9]; $sqlval['flg2'] = $arrCSV[10]; $sqlval['flg3'] = $arrCSV[11]; $sqlval['flg4'] = $arrCSV[12]; $sqlval['flg5'] = $arrCSV[13]; $sqlval['flg6'] = $arrCSV[14]; $objQuery->insert("mtb_zip", $sqlval); } $cnt++; // $disp_line件ごとに進捗表示する if($cnt % $disp_line == 0 && $img_cnt < IMAGE_MAX) { print("<img src='". $img_path ."install/graph_1_w.gif'>"); $this->myFlush(); $img_cnt++; } } fclose($fp); print("<img src='". $img_path ."install/space_w.gif'><br>\n"); print("<table width='700' height='50' border='0' cellpadding='0' cellspacing='0' bgcolor='#494E5F'>\n"); print("<tr>\n"); print("<td align='center'><a href='java script:window.close()'><img src='". $img_path ."install/close.gif' alt='CLOSE' width='85' height='22' border='0' /></a></td>\n"); print("</tr>\n"); print("</table>\n"); } } /** * デストラクタ. * * @return void */ function destroy() { parent::destroy(); } /** * 出力バッファをフラッシュし, バッファリングを開始する. * * @return void */ function myFlush() { flush(); ob_end_flush(); ob_start(); } } |
ramrun |
投稿日時: 2009/6/15 22:52
対応状況: −−−
|
仙人 登録日: 2006/11/3 居住地: 投稿: 789 |
Re: 郵便番号DB登録の不具合? ini_setでmax_execution_timeを伸ばして対応できたようですが、文字コードのほうは大丈夫だったのかな?
xreaのほうですが、 XREA&CORE SUPPORT BOARD:sendmailで複数送信は不可? http://sb.xrea.com/showthread.php?t=965 によるとやはりKILLされるみたいです。 時間が一定ではなく7分いけたのもあったので、共有サーバ全体としての負荷をみているのかもしれませんが、詳細は不明です。 それにしてもメルマガ禁止だったとは(汗)。 表の XREA FAQ(よくある質問) には http://www.xrea.com/?action=faq#7 引用: CGIなどから利用するメール機能「Sendmail」は使用できます。ただし、匿名メールや、広告メールは一切禁止です。不特定多数が使用する方法も禁止しています。 xrea+でec-cubeを考えている人は注意しましょう。 |
kokoko |
投稿日時: 2009/6/16 0:54
対応状況: −−−
|
半人前 登録日: 2009/6/4 居住地: 投稿: 18 |
Re: 郵便番号DB登録の不具合? ramrun様>
シックスコアの方では今のところ上記の手法で問題なく登録できました。 サーバのシステムによっても色々設定が変わるみたいで私のような素人にはなかなか初期設定が大変なものですね(−−: |
seasoft |
投稿日時: 2009/9/24 21:54
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: 郵便番号DB登録の不具合? 引用:
http://svn.ec-cube.net/open_trac/changeset/18317 にて、タイムアウトする環境にも対応できるように改修してみました。 今晩のナイトリービルドから、取り込まれる予定です。 実際にタイムアウトする環境でのテストを行なっていませんので、環境がある方は、お試しいただき結果を教えていただけると助かります m(__)m
|
« 1 (2) |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |