web-dev-qa-db-ja.com

PHP:.SQLデータファイルのインポート時の最大実行時間

XAMPPでphpMyAdminを使用して大きな.sqlデータファイルをインポートしようとしています。しかし、これには多くの時間がかかり、私は取得し続けます:

致命的なエラー:行285のC:\ xampp\phpMyAdmin\libraries\dbi\DBIMysqli.class.phpで最大実行時間が300秒を超えています

また、ファイルの長さは約120万行です。

ファイルのサイズは約30MBなので、それほど大きくありません。なぜそんなに時間がかかっているのか本当に分かりません。

;;;;;;;;;;;;;;;;;;;
; Resource Limits ;
;;;;;;;;;;;;;;;;;;;

; Maximum execution time of each script, in seconds
; http://php.net/max-execution-time
; Note: This directive is hardcoded to 0 for the CLI SAPI
max_execution_time=30000

; Maximum amount of time each script may spend parsing request data. It's a good
; idea to limit this time on productions servers in order to eliminate unexpectedly
; long running scripts.
; Note: This directive is hardcoded to -1 for the CLI SAPI
; Default Value: -1 (Unlimited)
; Development Value: 60 (60 seconds)
; Production Value: 60 (60 seconds)
; http://php.net/max-input-time
max_input_time=60

; Maximum input variable nesting level
; http://php.net/max-input-nesting-level
;max_input_nesting_level = 64

; How many GET/POST/COOKIE input variables may be accepted
; max_input_vars = 1000

; Maximum amount of memory a script may consume (128MB)
; http://php.net/memory-limit
memory_limit=200M

これは、xamppのphp.iniの構成ファイルです。何らかの理由でまだ取得できます

致命的なエラー:行285のC:\ xampp\phpMyAdmin\libraries\dbi\DBIMysqli.class.phpで最大実行時間が300秒を超えています。

30
EssexPN

PhpMyAdminディレクトリ内には、libraries\config.default.phpという名前の$cfg['ExecTimeLimit']という設定変数があり、必要な最大実行時間に設定できます。

45
Randell

さて、これを取り除くには、phpMyadmin変数を0に設定する必要があります。これは無制限であるか、ニーズに適した秒単位の値です。または、常にCLI(コマンドラインインターフェイス)を使用して、そのようなエラーを取得することさえできません( this link を参照してください)。

ここでのエラーについては、最初に安全な側でPHPパラメータを適切に設定して、大きなファイルをアップロードし、その時点からの最大実行時間を使用できるようにしてください。 php.iniファイルの3つのパラメーターを以下に設定します。

  1. max_execution_time = 3000000(必要に応じて設定してください)
  2. post_max_size = 4096M
  3. upload_max_filesize = 4096M

それが完了したら、「config.default.php」のような名前のphpMyadmin構成ファイルの検索に戻ります。 XAMPPでは、「C:\ xampp\phpMyAdmin\libraries」フォルダーの下にあります。 config.default.phpというファイルを開いて設定します:

$cfg['ExecTimeLimit'] = 0;

設定したら、MySQLとApacheを再起動し、データベースをインポートします。

楽しい... :)

23
Umesh Patil

Webインターフェイスを介して巨大なデータセットをインポートしようとしています。

デフォルトでは、PHP Webサーバーのコンテキストで実行されるスクリプトは、単一のエラーPHPサーバー全体とサービス拒否を引き起こします。

そのため、インポートは失敗します。 PHPMyAdminはWebアプリケーションであり、PHPによって課せられる制限に達しています。

制限を引き上げてみることもできますが、その制限は正当な理由で存在するため、お勧めできません。 Webサーバーで実行するのに非常に長い時間がかかるスクリプトを実行することは、非常に悪い考えです。

PHPMyAdminは、実際にはこのようなヘビーデューティーの仕事を目的としておらず、日々のハウスキーピングタスクとトラブルシューティングを目的としています。

最良のオプションは、mysqlコマンドラインツールなど、ジョブに適切なツールを使用することです。ファイルがSQLダンプであると仮定すると、コマンドラインから次を実行してみることができます。

mysql -u(your user name here) -p(your password here) -h(your sql server name here) (db name here) < /path/to/your/sql/dump.sql

または、コマンドラインツールに慣れていない場合は、SQLYog(Windowsの場合)、Sequel Pro(Macの場合)などがインポートジョブの実行に適している場合があります。

5
GordonM

これは私のために働いた。 DBIMysqli.class.phpファイルで最大実行時間300を超えた場合。テキストエディターで次のファイルを開きますC:\xampp\phpMyAdmin\libraries\config.default.php、次のコード行を検索します。

$cfg[‘ExecTimeLimit’] = 300;

300900に変更します。

https://surya2in1.wordpress.com/2015/07/28/fatal-error-maximum-execution-time-of-300-seconds-exceeded/

4
William

$ cfg ['ExecTimeLimit'] = 0に設定するだけです; xampp/phpMyAdmin/libraries/config.default.phpにあります。

秒単位の最大実行時間(制限なしの場合は0)。

そして、php.iniファイルサイズごとのファイル。

post_max_size = 600M 
upload_max_filesize = 500M 
max_execution_time = 5000 
max_input_time = 5000 
memory_limit = 600M

ただし、「post_max_size」と「memory_limit」がupload_max_filesizeよりも大きいことを確認してください。

**注-サーバーを再起動することを忘れないでください。

1
Tejas Damre

.sqlファイルですか、それとも圧縮されていますか(.Zip、.gzなど)?圧縮形式では、より多くのPHPリソースが必要になるため、アップロードする前に圧縮を解除してみてください。

ただし、他にも試すことができる方法があります。コマンドラインアクセスがある場合は、ファイルをアップロードし、コマンドラインクライアントmysqlでインポートします(mysql> 促す、 use databasename;その後source file.sql)。

それ以外の場合は、phpMyAdminの「UploadDir」機能を使用してファイルをサーバーに配置し、ローカルマシンからアップロードすることなくphpMyAdmin内に表示できます。

このリンク にはUploadDirの使用に関する情報があり、 このリンク にはいくつかのヒントとメソッドがあります。

1
Isaac Bennetch

変更する必要がありますphp_admin_value max_execution_timeエイリアス設定で(\XAMPP\alias\phpmyadmin.conf)

答えはここにあります: WAMPServer phpMyadmin 360秒の最大実行時間を超えました

1
mp.hamid

成功せずに多くのことを試みた後、サーバーへのSSHアクセスを取得し、phpMyAdminの代わりにコマンドラインで80Mbデータベースをインポートしました。コマンドは次のとおりです。

mysql -u root -p -D mydatabase -o < mydatabase.sql

Windowsでxammpを実行している場合、mysql.exeのパスはC:\xampp\mysql\bin\mysql.exe

0
  1. 元のconfig.default.phpファイルを変更しないでください。
  2. Php.iniで一般的な実行時間を変更しても、phpmyadminスクリプトには影響しません。
  3. 代わりに、新しいconfig.inc.phpまたは/ phpMyAdminフォルダーにあるconfig.sample.inc.phpを使用してください。
  4. $cfg[‘ExecTimeLimit’] = 0;は、上記で推奨されているようにconfig.inc.phpで無限の実行を意味するように設定できます。これは「通常の」iniファイルではないことに注意してください。そのphpスクリプトなので、そのファイルの先頭に<?phpを開く必要があります。
  5. しかし、最も重要なのは、この手順をまったく使用しないでください! phpmyadminは小さなデータベースには問題ありませんが、数MBまたはGBの巨大なデータベースには問題ありません。

サーバー上にインポートを処理する他のツールがあります。

a)Pleskのようなサーバー管理システムがある場合は、そこにあるデータベースインポートツールを使用します。

b)sshコマンドを使用してデータベースダンプを作成するか、sshを介してmysqlにデータベースを直接書き込みます。以下のコマンド。

データベースダンプを作成します。

mysqldump DBname --add-drop-table -h DBhostname -u DBusername -pPASSWORD > databasefile.sql

データベースをmysqlに書き込みます。

mysql -h rdbms -u DBusername -pPASSWORD DBname < databasefile.sql