Я пытаюсь прочитать 12MB + файл с большой HTML-таблицей, которая выглядит следующим образом:
<table>
<tr>
<td>a</td>
<td>b</td>
<td>c</td>
<td>d</td>
<td>e</td>
</tr>
<tr>
<td>a</td>
<td>b</td>
<td>c</td>
<td>d</td>
<td>e</td>
</tr>
<tr>..... up to 20,000+ rows....</tr>
</table>
Вот как я это очищаю:
<?
require_once 'phpQuery-onefile.php';
$d = phpQuery::newDocumentFile('http://localhost/test.html');
$last_index = 20000;
for ($i = 1; $i <= $last_index; $i++)
{
$set['c1'] = $d['tr:eq('.$i.') td:eq(0)']->text();
$set['c2'] = $d['tr:eq('.$i.') td:eq(1)']->text();
$set['c3'] = $d['tr:eq('.$i.') td:eq(2)']->text();
$set['c4'] = $d['tr:eq('.$i.') td:eq(3)']->text();
$set['c5'] = $d['tr:eq('.$i.') td:eq(4)']->text();
}
// code to insert to db here...
?>
Мой тест говорит, что на чистку и вставку 1000 строк в дб уходит около 5,25 часа.Учитывая эти данные, потребуется всего 5 дней, чтобы закончить все 20 000+ строк.
Моя локальная машина работает на:
- XAMPP
- Win 7
- proc, i3 2100 3,1 ГГц
- ram, G.Skill RipJaws X 4 ГБ dual
- HDD, старый SATA
Есть ли способЯ могу ускорить процесс?Может быть, я соскребаю это неправильно?Обратите внимание, что файл доступен локально, поэтому я использовал http://localhost/test.html
Чуть более быстрое решение:
for ($i = 1; $i <= $last_index; $i++)
{
$r = $d['tr:eq('.$i.')'];
$set['c1'] = $r['td:eq(0)']->text();
$set['c2'] = $r['td:eq(1)']->text();
$set['c3'] = $r['td:eq(2)']->text();
$set['c4'] = $r['td:eq(3)']->text();
$set['c5'] = $r['td:eq(4)']->text();
}
// code to insert to db here...
?>