Saludos, la pregunta que hare aqui no esta necesariamente relacionada con cake, pero cometo el pecado de hacerla en la lista por si alguien sabe como ayudarme, pues estoy usando cakephp en el proyecto.
Actualmente tengo una aplicacion que edita un archivo binario cambiando 16 bytes que estan en la misma posicion siempre (640 bytes despues del inicio del archivo), sin embargo lo que estoy haciendo es leer TODO el archivo para luego escribirlo usando la funcion pack, lo que siento que es bastante torpe y desconsiderado con la memoria ram (considerando que necesito hacer esto cientos de veces al instante). Este es el código que estoy utilizando:
if ( !file_exists($cache) || @$this->params['named']['cache'] === 0){
$handle = fopen($filename, "r+b");
$init = fread($handle, 640);
fread($handle, 16); //esto debe ser exactamente igual a lo que se reemplaza.
$full = fread($handle, filesize($filename)); // leemos el resto para escribirlo despues
fclose($handle);
//las concateno para que sea human readable
$contents = pack('a640'.'A16'.'a*', $init, $this->params['id'], $full);
$handle = fopen($cache, "w+b");
fwrite($handle, $contents);
fclose($handle);
FireCake::fb(" GENERADO (".@$this->params['named']['cache'].") $referer ($cache)");
}
Alguna idea de como hacerlo "mas eficiente"? ¿puedo editarlo sin necesidad de cargar todo el archivo en memoria?
Arnold
Check out the new CakePHP Questions site http://cakeqs.org and help others with their CakePHP related questions.
You received this message because you are subscribed to the Google Groups "CakePHP" group.
To post to this group, send email to cake-php@googlegroups.com
To unsubscribe from this group, send email to
cake-php+unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php?hl=en
Wednesday, May 26, 2010
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment