Нужно поднять бд фиас в mysql желательно только Москвы, пробовал парсить xml получилось неплохо но когда дело доходить до файла размером 3гб ( а там есть и больше ) через минут 5 мой алгоритм возвращает предупреждение: PHP Warning: Error while sending QUERY packet. PID=8532 in /var/www/html/xml_to_db/xml.php on line 71 (запускаю консолью в linux)
71 строка: if ($db->query($sql) && $sql != 'INSERT INTO ' . $t_name . ' (') {
в результате данные с такого большего файла совсем не записываются
Код:
$db = new PDO('mysql:host=localhost;dbname=fias', 'root', '');
$db->exec('SET CHARACTER SET utf8');
$files = scandir('xml');
$sql = '';
for ($i=2; $i < count($files); $i++) {
$t_name = $files[$i];
$xml = new XMLReader();
$xml->open("xml/$files[$i]");
$xml->next();
$t_name = $xml->name;
$xml->read();
$record_name = $xml->name;
$xml->open("xml/$files[$i]");
while($xml->read() && $xml->name != $record_name)
{
;
}
while($xml->name == $record_name)
{
$sql .= 'INSERT INTO ' . $t_name . ' (';
$sql_values = 'VALUES ("';
$element = new SimpleXMLElement($xml->readOuterXML());
$continue = false;
foreach ($element->attributes() as $a_name => $a_val) {
if ($a_name == 'REGIONCODE' ) {
if ($a_val != '50') {
$continue = true;
}
}
$sql .= $a_name.', ';
$sql_values .= $a_val.'", "';
}
if (!$continue) {
$sql = substr($sql, 0, strlen($sql) - 2).') ';
$sql_values = substr($sql_values, 0, strlen($sql_values) - 3).' );';
$sql .= $sql_values;
try {
if ($db->query($sql) && $sql != 'INSERT INTO ' . $t_name . ' (') {
echo "_";
}
$sql = '';
} catch (Exception $e) {
echo "catch ";
}
}
$counter++;
$xml->next($record_name);
unset($element);
}
$xml->close();
echo "end table: ". $t_name.' / / ';
// echo $counter;echo "<br>";
}
echo "___END___";
Нужно както поправить этот код или может есть какоето проверенное решение этой задачи
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Почему так произошло
Может кто знает как подключить Leaflet карту с возможностью рисовать полигоны на карте и потом отправлять координаты на почту (второстепенно)У...
В общем пишет что нет класса CSSphp хотя он есть и подключен вот так