- Timestamp:
- 2011/02/22 10:47:25 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/version-2_5-dev/data/class/helper/SC_Helper_CSV.php
r20285 r20318 232 232 } 233 233 // 固有処理ここまで 234 234 return $this->sfDownloadCsvFromSql($sql, $arrVal, $this->arrSubnavi[$csv_id], $arrOutput['disp_name'], $is_download); 235 } 236 237 /** 238 * SQL文からクエリ実行し CSVファイルを送信する 239 * 240 * @param integer $sql SQL文 241 * @param array $arrVal プリペアドステートメントの実行時に使用される配列。配列の要素数は、クエリ内のプレースホルダの数と同じでなければなりません。 242 * @param string $file_head ファイル名の頭に付ける文字列 243 * @param array $arrHeader ヘッダ出力列配列 244 * @param boolean $is_download true:ダウンロード用出力までさせる false:CSVの内容を返す(旧方式、メモリを食います。) 245 * @return mixed $is_download = true時 成功失敗フラグ(boolean) 、$is_downalod = false時 string 246 */ 247 function sfDownloadCsvFromSql($sql, $arrVal = array(), $file_head = 'csv', $arrHeader = array(), $is_download = false) { 248 $objQuery =& SC_Query::getSingletonInstance(); 249 250 // 実行時間を制限しない 251 @set_time_limit(0); 235 252 // ヘッダ構築 236 $header = $this->sfArrayToCSV($arrOutput['disp_name']); 237 $header = mb_convert_encoding($header, 'SJIS-Win'); 238 $header .= "\r\n"; 253 if(is_array($arrHeader)) { 254 $header = $this->sfArrayToCSV($arrHeader); 255 $header = mb_convert_encoding($header, 'SJIS-Win'); 256 $header .= "\r\n"; 257 } 239 258 240 259 //テンポラリファイル作成 241 260 // TODO: パフォーマンス向上には、ストリームを使うようにすると良い 242 // 環境要件が バージョン5.1以上になったら使うように変えても良いかと261 // 環境要件がPHPバージョン5.1以上になったら使うように変えても良いかと 243 262 // fopen('php://temp/maxmemory:'. (5*1024*1024), 'r+'); 244 $tmp_filename = tempnam(CSV_TEMP_REALDIR, $ this->arrSubnavi[$csv_id]. '_csv');263 $tmp_filename = tempnam(CSV_TEMP_REALDIR, $file_head . '_csv'); 245 264 $this->fpOutput = fopen($tmp_filename, "w+"); 246 265 fwrite($this->fpOutput, $header); … … 251 270 if($is_download) { 252 271 // CSVを送信する。 253 $this->lfDownloadCSVFile($tmp_filename, $this->arrSubnavi[$csv_id]. "_");272 $this->lfDownloadCSVFile($tmp_filename, $file_head . "_"); 254 273 $res = true; 255 274 }else{ 256 275 $res = SC_Utils_Ex::sfReadFile($tmp_filename); 257 276 } 258 277 259 278 //テンポラリファイル削除 260 279 unlink($tmp_filename); 261 280 return $res; 262 281 } 282 263 283 264 284 // CSV出力データを作成する。(レビュー)
Note: See TracChangeset
for help on using the changeset viewer.