Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    Soluzioni per salvare oggetti built-in?

    non mi ero mai posto il problema seriamente, ma con tutte queste nuove classi in PHP5 trovo ridicolo che non si possa salvare lo stato di un'istanza ... esempio:
    codice:
    $xml    = DOMDocument::loadXML(file_get_contents('random.xml'));
    // provate a salvare $xml o a serializzarlo ... e' vuoto, stato perso!
    serialize e unserialize sono quindi inutili, a meno che non si estenda la classe iniziale e si implementi lo __sleep ed il __wakeup sulle instanze ma questo significa che per ogni unserialize l'istanza deve reimpostarsi l'xml, il quale e' ad esempio il collo di bottiglia su N chiamate al server.

    Io vorrei salvare lo stato dell'istanza dopo aver gia' definito il DOM, ma non e' possibile in PHP salvare built-in objects, nemmeno via APC (la quale cosa mi fa pensare che APC altro non faccia che serializzare istanze invece di metter opcode da qualche parte e reindirizzarlo alla nuova instanza in fetch ...)

    Vorrei sapere quali soluzioni usate per casi built-in, sempre che ce ne siano di validi (per esempio, Doctrine fa anche questo? Mi leggo come ... propel fa anche questo? mi studio come, etc, ma vorrei sapere chi e' in grado di fare questo in PHP (Hibernate style))

    Grazie
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  2. #2
    http://it2.php.net/manual/en/functio...ml-xmltree.php
    DomDocument->dump_mem() or DomDocument->dump_file()


    se ho capito quello che vuoi

    fanno 10 euro

  3. #3
    no, non hai capito, ma grazie per il tentativo.
    Rispiego ... dimenticate il DOMDocument, qualunque instanza di una builtin non e' serializzabile, ergo non e' possibile salvare lo stato di un'istanza tipo DOMDocument e riprenderla con tot operazioni gia' fatte senza serializzare e reimportare di nuovo l'xml.

    Ma questo e' vero con tutte ... prendi usa classe nativa, crea un'istanza, fai qualcosa, stato perso ... se devo salvare il contenuto come stringa e rimetterlo nell'istanza uso __sleep e __wakeup, ma e' esattamente questo che vorrei evitare.

    codice:
    $xsltp = new XSLTProcessor;
    $xsltp->importStyleSheet(DomDocument::load($path));
    // NON VOGLIO REIMPORTARE IL FOGLIO DI STILE, ALTRIMENTI ADDIO PERFORMANCES
    apc_add('myxslt', $xsltp);
    serialize($xsltp);
    // quello che vi pare, non salva lo stato, devo ricaricare e riparsare tutto il foglio di stile
    devo re-importare lo stile poiche' viene salvata un'inutile istanza di XSLTProcessor ... e cosa la salvo a fare? Io voglio salvare lo stato
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  4. #4
    ah tu vuoi serializzare direttamente, non si può, ma tanto se usi PHP è probabile che le performance non siano così importanti

    io metterei in cache il risultato dell'operazione che ti interessa fare e punto... tieni conto che la cosa che gestisce pià velocemente php sono le stringhe, usa XML e non serialize

    cioè quando faccio la cache con PHP uso stringhe, non serializzo un emerito

  5. #5
    pinolo ... io ho chiesto se conoscete un estenzione, un orm, un vattelapesca capace di memorizzare lo stato di istanze built-in. Se non lo conoscete non importa, non dovete postare per forza eh ... grazie
    (sulle performances, lascia perdere, continua con siti da 2 utenti al giorno, che ti devo dire, se lavori sopra wikipedia o siti con alto traffico invece, non devi riscrivere tutto in Java o C#, devi solo approfondire e sfruttare meglio PHP ... un codice pensato e scritto bene in PHP e' piu' veloce di quintali di spazzatura sopra C# "tanto e' veloce" ... per intenderci ... )

    Comincia da qui: http://www.alexatnet.com/node/196
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  6. #6
    Originariamente inviato da andrea.paiola
    io metterei in cache il risultato dell'operazione che ti interessa fare e punto... tieni conto che la cosa che gestisce pià velocemente php sono le stringhe, usa XML e non serialize
    ma tu hai capito il problema?
    hai capito che per ogni caricamento di XML il PHP al suo interno fa operazioni via core, quello scritto in C, e che queste operazioni hanno un peso e nessun senso di esistere dato che fosse possibile ibernare l'istanza non dovresti scomodare un intero parser XML ma ritrovarti semplicemente un'istanza gia' pronta all'uso?
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  7. #7
    Originariamente inviato da andr3a
    ma tu hai capito il problema?
    hai capito che per ogni caricamento di XML il PHP al suo interno fa operazioni via core, quello scritto in C, e che queste operazioni hanno un peso e nessun senso di esistere dato che fosse possibile ibernare l'istanza non dovresti scomodare un intero parser XML ma ritrovarti semplicemente un'istanza gia' pronta all'uso?
    sì, se non metti in cache il risultato di apc_add('myxslt', $xsltp); o di quello che ti interessa calcolare

    che è appunto il valore della tua istanza... l'hai ibernata senza scomodare orm o quello che ti pare, che probabilmente introdurrebbero comunque un peso considerevole e che comunque non vedo come si possano interfacciare con PHP, se PHP non offre API per accedere allo stato degli oggetti built-in

    per le performance non ti rispondo, tanto stai solo trollando

  8. #8
    ma perche' posti? ma leggi prima di rispondere?
    se salvi via APC non salvi niente ... assolutamente niente, come serializzarla.
    Secondo punto, se non hai una risposta o non sai la risposta, come ho gia' detto, non devi postare per forza ... non fa figo, fa solo girare le scatole ... (almeno leggi e cerca di capire prima di rispondere)

    Terzo, cosi' la smetti con risposte inutili, questo e' un esempio, usato dal times:
    http://code.nytimes.com/projects/xslcache

    la ragione e' la stessa, 20 secondi per importare 3000 volte un foglio di stile su un'istanza, abbassati a 7 se la stessa viene salvata durante un'unica sessione (prima che il php finisce di essere esguito, cosi' magari capisci meglio cosa intendo)
    Ma per ogni chiamata alla pagina, devo reimportare il foglio di stile ... cosa che il times ha risolto con una estenzione privata che appunto salva lo stato interno e lo riassegna ... non ho chiesto banalita' ne fantascienza, ho chiesto se qualcuno conosce un modo per salvare lo stato di istanze built-in (istanze generiche, non QUESTO SINGOLO CASO).

    Ora, se non sai la risposta, fammi il favore di trollare altrove, grazie.
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  9. #9
    ah adesso ho capito perchè chiedi na cosa del genere e cosa chiedi
    mi sa che ti devi riscrivere l'estensione che gestisce quell'oggetto built-in, esattamente come ha fatto il times

  10. #10
    Originariamente inviato da andrea.paiola
    mi sa che ti devi riscrivere l'estensione che gestisce quell'oggetto built-in, esattamente come ha fatto il times
    ecco, io invece ho aperto questo post per evitare i "mi sa che" ... avanti il prossimo?

    P.S. mi riquoto: istanze generiche, non QUESTO SINGOLO CASO
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.