テキストファイルからさまざまなデータをインポートするためのPHPスクリプトがあります。
インポートは非常に複雑で、私のテストファイルには32.000のエントリがあります。これらのエントリは解析され、mysqlデータベースに挿入される必要があります。
スクリプトを実行する場合、完了するまでに30分かかります...そしてこの時点で、サーバーのCPUは99%アイドル状態です。
マシンからより多くの電力を使用しているphpとmysqlを最適化する機会はありますか?
コード:
if ($handle = @fopen($filename, "r")) {
$canceled = false;
$item = null;
$result = null;
while (!feof($handle)) {
$buffer = fgets($handle, 4096);
$line = $buffer;
if (substr($line, 0, 2) == '00') {
continue;
}
else if (substr($line, 0, 2) == '99') {
continue;
}
else if (strlen($line) < 75) {
continue;
}
Reread:
if ($canceled) {
break;
}
if ($item == null) {
$item = new DA11_Item();
$item->boq_id = $boq_id;
}
$result = $this->add_line_into_item($item, $line);
if ($result == self::RESULT_CLOSED) {
$this->add_item($item);
$item = null;
}
else if ($result == self::RESULT_REREAD) {
$this->add_item($item);
$item = null;
goto Reread;
}
else if ($result == self::RESULT_IGNORD) {
if (count($item->details()) > 0) {
$this->add_item($item);
}
$item = null;
}
}
if ($item !== NULL) {
$this->add_item($item);
}
fclose($handle);
}
add_itemは$item->save()を実行し、それをデータベースに保存します。
thxと親切なよろしく、viperneo