2011-06-20 11 views
-1

私はmysqlのテーブルに1500レコードしか挿入できませんが、約21,000レコードを挿入しようとするとブラウザがフリーズします。何が問題なの?また、私はプログラムを実行するたびに、少しデータが挿入されることに気がつきました。たとえば、私がプログラムを実行する時間は、1500レコードあり、テーブルを削除してプログラムを再実行し、その時には1550、次に2500があります。それはなぜですか?助言がありますか?コードはMySQLのphp5と私のデータベースにあります。は、私のテーブルに21,000レコードを挿入することはできません。ブラウザはフリーズし続けます

ありがとう、

+0

サーバーへのシェルアクセスを持っていますか? – djdy

+0

私はWampServerを使用しています。 – T3000

答えて

1

ISAMテーブルに1つのトランザクションとして21,000レコードを書き込んでいますか?レコードが多いほど、より大きなロールバックセグメントを維持する必要があることを意味します。それはあなたの問題の説明ですか?そうであれば、より小さな単位の作業が良いアイデアかもしれません。バッチサイズが1,500の場合、21,000レコードは14の別々の作業単位を意味します。

+0

私が前に述べたように、私がプログラムを実行するたびに、私はより多くのデータが挿入されていることに気付きます。プログラムを最後に実行したとき、5291レコードが挿入されました。これらのレコードはxmlファイルから抽出されます。 – T3000

3

シェルアクセス権がなく、php.iniを調整してmax_execution_timeおよびmax_input_time設定変数を拡大できない場合は、大きなファイルを小さなチャンクに分割して一度に1つずつ読み込んでください。

そうでない場合は、検索してphp.iniで次のように設定します。

max_execution_time 600 
max_input_time 600 
memory_limit 256M 

また、特にときに、プロセスがクラッシュが起こっているかを確認するようにApache/PHPのエラーログを確認することができます。

最後に、あなたはコマンドラインからのMySQLに直接それをインポートしてみてください:

mysql -uroot -p databasename < file.sql 

幸運を!

2

あなたは、MySQLへのログインをコマンドプロンプトを使用して、ダンプ・ファイルをインポートできます。まず、あなたが21K行を挿入するためのスクリプトを実行している場合、あなたはCLIスクリプトを使用することができ、かつセット

mysql -u username -p database_name < dumpfile.sql 
1

を/etc/php5/cli/php.iniのmax_execution_time(OSに依存します)。

他のソリューションは、すべての挿入のqueryesでファイルを生成し、コンソールでファイルを実行している:

mysql -hserver -uyouruser -pyourpassword DBName < generated_file.sql 
+0

私はPHPでコーディングしているのは2ヶ月しか経っていないことに言及していません。私はまだ学んでいます。多分私はコードを投稿すれば、どこで変更を加えるのが良いか分かります。これは私が書いたコードです: – T3000

関連する問題