static function lfExecuteSQL($filepath, $dsn, $disp_err = true) { $result = true; if (!file_exists($filepath)) { AddProduct::lfTriggerError('SQLファイル[' . $filepath . ']が見つかりません'); $result = false; } else { if ($fp = fopen($filepath, "r")) { $sql = fread($fp, filesize($filepath)); fclose($fp); } // Debugモード指定 $options['debug'] = PEAR_DB_DEBUG; $objDB = MDB2::connect($dsn, $options); // 接続エラー if (!PEAR::isError($objDB)) { $sql_split = split(";", $sql); foreach ($sql_split as $key => $val) { SC_Utils::sfFlush(); if (trim($val) != "") { $ret = $objDB->query($val); if (PEAR::isError($ret) && $disp_err) { AddProduct::lfTriggerError("DB query Error message = " . $ret->message); $result = false; break; } } } } else { AddProduct::lfTriggerError("DB connect Error message = " . $objDB->message); $result = false; } } return $result; }
public function testSfFlush_文字列を指定した場合_フラッシュされる() { $this->expectOutputString(''); echo 'Hello, World!!'; SC_Utils::sfFlush('Hello'); }
/** * シーケンスを生成する. * * @param array $arrSequences シーケンスのテーブル名, カラム名の配列 * @param array $arrDsn データソース名の配列 * @return array エラーが発生した場合はエラーメッセージの配列 */ function lfCreateSequence($arrSequences, $arrDsn) { $arrErr = array(); // Debugモード指定 $options['debug'] = PEAR_DB_DEBUG; // 接続エラー if (!PEAR::isError($objDB)) { $objDB = MDB2::connect($arrDsn, $options); $objManager =& $objDB->loadModule('Manager'); $exists = $objManager->listSequences(); $objDB->disconnect(); foreach ($arrSequences as $seq) { SC_Utils::sfFlush(true); $objDB = MDB2::connect($arrDsn, $options); $objManager =& $objDB->loadModule('Manager'); $res = $objDB->query('SELECT max(' . $seq[1] . ') FROM ' . $seq[0]); if (PEAR::isError($res)) { $arrErr['all'] = '>> ' . $res->userinfo . '<br />'; GC_Utils_Ex::gfPrintLog($res->userinfo, INSTALL_LOG); return $arrErr; } $max = $res->fetchOne(); $seq_name = $seq[0] . '_' . $seq[1]; $result = $objManager->createSequence($seq_name, $max + 1); if (PEAR::isError($result)) { $arrErr['all'] = '>> ' . $result->message . '<br />'; GC_Utils_Ex::gfPrintLog($result->userinfo, INSTALL_LOG); } else { GC_Utils_Ex::gfPrintLog('OK:' . $seq_name, INSTALL_LOG); } $objDB->disconnect(); } } else { $arrErr['all'] = '>> ' . $objDB->message; GC_Utils_Ex::gfPrintLog($objDB->userinfo, INSTALL_LOG); } return $arrErr; }
function lfExecuteSQL($filepath, $dsn, $disp_err = true) { $arrErr = array(); if (!file_exists($filepath)) { $arrErr['all'] = ">> スクリプトファイルが見つかりません"; } else { if ($fp = fopen($filepath, "r")) { $sql = fread($fp, filesize($filepath)); fclose($fp); } // Debugモード指定 $options['debug'] = PEAR_DB_DEBUG; $objDB = DB::connect($dsn, $options); // 接続エラー if (!PEAR::isError($objDB)) { $sql_split = split(";", $sql); foreach ($sql_split as $key => $val) { SC_Utils::sfFlush(); if (trim($val) != "") { $ret = $objDB->query($val); if (PEAR::isError($ret) && $disp_err) { $arrErr['all'] = ">> " . $ret->message . "<br>"; // エラー文を取得する ereg("\\[(.*)\\]", $ret->userinfo, $arrKey); $arrErr['all'] .= $arrKey[0] . "<br>"; $objPage->update_mess .= ">> テーブル構成の変更に失敗しました。<br>"; GC_Utils_Ex::gfPrintLog($ret->userinfo, INSTALL_LOG); } else { GC_Utils_Ex::gfPrintLog("OK:" . $val, INSTALL_LOG); } } } } else { $arrErr['all'] = ">> " . $objDB->message; GC_Utils_Ex::gfPrintLog($objDB->userinfo, INSTALL_LOG); } } return $arrErr; }
/** * ブラウザに強制的に送出する * * @param boolean|string $output 半角スペース256文字+改行を出力するか。または、送信する文字列を指定。 * @param int $sleep * @return void */ public static function sfFlush($output = false, $sleep = 0) { static $ignore_user_abort = false; if (!$ignore_user_abort) { ignore_user_abort(true); $ignore_user_abort = true; } if (connection_status() != CONNECTION_NORMAL) { $customer = $_SESSION["customer"]; trigger_error("connection aborted agent (" . $_SERVER["HTTP_USER_AGENT"] . ") customer_id=" . $customer["customer_id"]); break; } parent::sfFlush($output, $sleep); }