
PHPとmySqlにて、DBデータのCSVダウンロード機能を作成中です。
抽出条件次第で膨大なクエリ送信回数となり、画面が真っ白になってしまいます。
画面が真っ白になる理由は、おそらくタイムアウト?のようなものだと思っています。
for文でクエリ送信し続けているので・・・
そこで、
1.正常に処理を終えるには、どのような手段があるでしょうか。
2.サーバーが2MBのデータまでしかダウンロードできないようなのですが、
判別するにはPHP側でどのような手段があるでしょうか。
クエリ文を見直して送信回数を減らす案以外でご教示願います。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
>for文でクエリ送信し続けているので・・・
となる時点で設計がまずかったとしか思えませんが、他に打つ手がないのなら分割実行するしかないですね。
クエリひとつごとにファイルに書き出して、locationヘッダなどで再処理していくしかないでしょう。
(e.g.)
<?php
session_name('pathchk');
session_start();
$max = isset($_SESSION['max']) ? intval($_SESSION['max']) : 1;
$path = isset($_SESSION['path']) ? intval($_SESSION['path']) : 1;
if ($path > $max) { $path = 1; }
if ($path == 1) {
// 実行するクエリのセット
$max = 5;
$_SESSION['sql'][1] = '1番目のクエリ';
$_SESSION['sql'][2] = '2番目のクエリ';
$_SESSION['sql'][3] = '3番目のクエリ';
$_SESSION['sql'][4] = '4番目のクエリ';
$_SESSION['sql'][5] = '5番目のクエリ';
$_SESSION['max'] = $max;
}
$sql = $_SESSION['sql'][$path];
//-- デバッグ用ここから(クエリ実行→CSV保存の代わり)
$fh = fopen('test.txt', 'a');
fputs($fh, $sql . PHP_EOL);
fclose($fh);
sleep(3);
//-- デバッグ用ここまで
$_SESSION['path'] = ++$path;
if ($path <= $max) {
header('Location: ' . $_SERVER['SCRIPT_NAME']);
} else {
print "Done";
}
No.2
- 回答日時:
PHP経由なら何回かに分けてダウンロードする(ページング)とか。
サーバーの設定にもよるでしょうけど、
SELECT * FROM table_name INTO OUTFILE '/public_html/path/data.csv'
などとしてcsvファイルにエクスポートして、http://example.com/path/data.csvにアクセスしてダウンロードとか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) 20万行あるデータを動かしたい 2 2023/06/13 15:21
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
- Access(アクセス) お世話になっています いまクエリを作っています。。 デザインビューの画面の集計の欄で、「グループ化」 4 2022/09/17 17:03
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
- PHP PHPで入力フォームでデータを確認表示画面まで送る流れを日本語で理解したいのです。 1 2023/05/29 19:12
- その他(データベース) accessでの請求管理について 2 2022/06/13 21:51
- Access(アクセス) Access DAOのExecuteメソッドのオプション(RecordsetOptionEnum)に 1 2022/09/19 07:34
- PHP クエリObjectをforeachで回す時に、次のレコードへ移動せずに次のレコードを取得したい 2 2022/07/28 15:29
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- 写真・ビデオ スマホアプリ 写真データへのアクセスについて 情報漏洩 2 2023/06/22 23:00
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQlite
-
VB勉強中
-
connectを使ったSQL実行でエラー
-
where以下の条件文
-
プリぺアドステートメントで変...
-
mysql php 複数のクエリ
-
PHPでMySQLのテーブルからcount...
-
配列データのレコード登録
-
MySQL 複数の同じような命令が...
-
教えて下さい。
-
データベースに存在するデータ...
-
データサイズでクエリ中止?
-
DBからSelectしたレコードのデ...
-
MySQLでの売上集計
-
下記エラーメッセージ解決について
-
MySQLの日付データについて
-
ループ内に任意行を差し込む処...
-
RFC822形式での日時の取得
-
MySQLのエラー出力
-
すいません、質問をさせて下さい。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
insert1つの処理でもトランザ...
-
<VB.NET>INSERT文でDBにデータ...
-
JAVA SQLServerException 列名 ...
-
Pro*Cの構文エラー
-
VBA ACCESS SQL...
-
PHP&MySQLでの文字列+数列の一...
-
【初歩】配列の格納データ数だ...
-
mysqliを使ってデータベースを...
-
配列で受け取った値がUPDATEで...
-
MySQLのINSERT時にたまに重複に...
-
一度検索されたものに対するソ...
-
cakePHPでSQLが実行できない。
-
PHP4とORACLE接続について
-
phpでforeach ($stmt as $row)...
-
phpmyadminにタグを格納するには
-
zendframework
-
データベースに存在するデータ...
-
データに「,」があると「"」で...
-
Q&Aサイトを作成していてURLの...
-
PHP+PDO+MYSQL で実行されたSQ...
おすすめ情報