23i
Guest
php5+xml dom - проблемы со скоростью и перегрузки
php 5.02 + xml dom + windows
есть класс который позволет перегнать массив пхп в xml.
при перегонки маленького массива никаких проблем,но
1. если начать переганать массив побольше то полная загрузка процессора (2 Ггц)
2. тот же маленький массив (2 элемента) + использование var_dump в последовательности: создаеться xml сущность далее используеться var_dump, потом сохранение xml приводит к тойже загрузке проца на всё катушку на неопределнно длительное время..
в чем может быть проблема?
может у кого есть или где то есть класс выполняющий подобную задачу, и ощибка у меня в классе?
собственно сам класс:
php 5.02 + xml dom + windows
есть класс который позволет перегнать массив пхп в xml.
при перегонки маленького массива никаких проблем,но
1. если начать переганать массив побольше то полная загрузка процессора (2 Ггц)
2. тот же маленький массив (2 элемента) + использование var_dump в последовательности: создаеться xml сущность далее используеться var_dump, потом сохранение xml приводит к тойже загрузке проца на всё катушку на неопределнно длительное время..
в чем может быть проблема?
может у кого есть или где то есть класс выполняющий подобную задачу, и ощибка у меня в классе?
собственно сам класс:
PHP:
interface xml_interface{
//public function xmltree();
}
class xml implements xml_interface {
private $root_element_name;
private $object_class;
private $object_values;
private $array_keys;
private $sub_array;
private $root_element;
private $main_element;
private $main_xml_object;
private $element;
private $attribute;
private $obj_element;
private $obj_value;
function __construct($array, $root_element_name = 'tc'){
if(is_array($array)){
$this->array = $array;
$this->xml_dom = new DOMDocument;
$root_element = $this->xml_dom->createElement($root_element_name);
$root_element = $this->xml_dom->appendChild($root_element);
$this->xmltree($this->array , $root_element);
} else {
custom_die('class xml: __construct error - первый параметр неявляеться массивом');
}
}
protected function xmltree($array, &$main_xml_object){
foreach($array as $key => $value){
$key_int = (int)$key;
$key_int = (string)$key_int;
dump($key_int,1);
dump(strlen($key_int),1);
dump(strlen($key),1);
if(strlen($key_int) == strlen($key))
$key = 'id'.$key;
$main_element = $this->xml_dom->createElement($key);
$main_element = $main_xml_object->appendChild($main_element);
switch ($value){
case (is_object($value)):
//$object_class = get_class($value);
$object_values = get_object_vars($value);
foreach($object_values as $obj_element => $obj_value){
$attribute = $this->xml_dom->create_attribute($obj_element, $obj_value);
$attribute = $main_element->appendChild($attribute);
}
break;
case (is_array($value)):
//$array_keys = array_keys($value);
$this->xmltree($value, $main_element);
break;
case (is_string($value)):
default:
$element = $this->xml_dom->createTextNode($value);
$element = $main_element->appendChild($element);
}
}
}
function __destruct() {
$this->xml_dom->save('e:/1.xml');
print "Destroying \n";
}
}