Ben oldukça basit bir php web sitesi için bir XML veri katmanı yazma hakkında gitmek nasıl merak ediyorum. Bunun nedenleri şunlardır:
- db sunucu kullanılamıyor.
- Xml olarak ifade edilebilir basit veri şema.
- Ben sunucu bağımlılıklar olmadan, kendi kendine yeten bir uygulama olan fikir gibi.
- Ben belki başka projelerde yeniden kullanım için küçük bir çerçeve soyut isterim.
Şema birkaç arama tabloları artı i18n ile basit bir kitap katalog andırıyor. Yani, ifade etmek oldukça basittir.
Ana XML dosyası büyüklüğü 15MB için 100kb of aralığındadır. Ama ~ 100mb noktada büyümeye olabilir.
I am actually considering extending my model classes to handle xml data. Currently I fetch data with a combination of XMLReader and SimpleXml, like this:
public function find($xpath){
while($this->xml_reader->read()){
if($this->xml_reader->nodeType===XMLREADER::ELEMENT &&
$this->xml_reader->localName == 'book' ){
$node = $this->xml_reader->expand();
$dom = new DOMDocument();
$n = $dom->importNode($node, true);
$dom->appendChild($n);
$sx = simplexml_import_dom($n);
// xpath returns an array
$res = $sx->xpath($xpath);
if(isset($res[0]) && $res[0]){
$this->results[] = $res;
}
}
return $this->results;
}
Yani, yerine bellekteki tüm xml dosyası yükleme, ben her bölüm için bir SimpleXMLElement nesnesi oluşturmak ve bu nesne üzerinde bir XPath sorgusu çalıştırın. Fonksiyon SimpleXML nesneleri dizisini döndürür. Muhafazakar arama için muhtemelen ilk bulunan madde üzerinde kıracak.
Ben sormak zorunda sorular şunlardır:
- Hatta büyük veri depolamak için bir ortam için kalıcı bir çözüm olarak bu düşünür müsünüz?
- Akılda tutulması gereken herhangi düşünceler / desenler, PHP XML işleme var mı?
- Mı büyük dosyalar için yukarıdaki kodu ölçek (100 mb)?
- Ekler ve büyük xml dosyaları güncellemeleri düşük havai bir şekilde ele alınabilir?
- Eğer daha iyi bir seçenek olarak alternatif bir veri formatı önerirsiniz?