Ir al contenido principal.
Enlaces relacionados:  Prensa  Compañía  Clientes  Contáctenos
Solsoft

Foros

bug in isis_terms function?


Autor Mensaje
Escrito en: 18. 03. 2005 [13:52]
roger@infomed.sld.cu
Roger Peña Escob
Autor del tema
registrado desde: 31.12.1969
Entradas: 0
hi everybody

yesterday night i was working on a clabel, tring to get working a new isi=
s DB in clabel,
everything was fine until i try to get the terms, i got nothing

when i debug the php page, php complain about "maximun memory allocation,=
more than 8 MB"

thought, i realice that the function was who make the error, then i "disc=
over" that the
function isis_terms just output _all_ the terms, i was working with a DB =
of 80000+
records

my next step was to modify the function in order to be able to use an int=
erval, an start
and a count variables, i did the new function and works just fine, so i s=
tart paging the
terms and .... guest what, i found that the function just become crasy w=
hen hit a terms
like "[S.A.]" or [S.A] , i can see those terms with openisis binary, but =
never with
php-openisis

any idea?

roger

----------------------------------------------------------------------
Nodo central de la red Infomed (http://www.sld.cu)
Usuario linux: 97152 (http://counter.li.org)
Miembro del grupo de coordinacion de LinuxCuba (http://www.linux.cu)

"Whatever you do will be insignificant, but it is very important
that you do it."
Gandhi
----------------------------------------------------------------------


-------------------------------------------------
Este mensaje fue enviado usando el servicio de correo en web de Infomed
http://webmail.sld.cu

------------------------------------------
Posted to Phorum via PhorumMail
Escrito en: 18. 03. 2005 [15:11]
braulio
Braulio Solano Rojas
registrado desde: 16.05.2008
Entradas: 2
Hola

I did not understand very well everything you said...

> when i debug the php page, php complain about "maximun memory allocation,
> more than 8 MB"

...but this is very common. Just change your php.ini.

V.G.:

memory_limit = 16M

http://www.php.net/manual/en/ini.core.php#ini.memory-limit

Good luck.

B.

------------------------------------------
Posted to Phorum via PhorumMail
Escrito en: 18. 03. 2005 [16:19]
roger@infomed.sld.cu
Roger Peña Escob
Autor del tema
registrado desde: 31.12.1969
Entradas: 0
Mensaje citado por braulio@solsoft.co.cr:

> Hola
>
> I did not understand very well everything you said...

creo que es mejor irse para el espanhol icon_smile.gif

lo que decia era que la funcion isis_terms() devuelve _todos_ los termino=
s, y los devuelve
en un array(), por tanto, es cuestion de tiempo llegar al limite de memor=
y_limit, no
importa si pongo 8MB o 16, en algun momento lo voy a alcanzar

la situacion seria diferente si yo pudiera pasarle dos parametros: inicio=
y cantidad de
terminos a devolver

esto ultimo ya lo hice, pues es una muy ligera modificacion a la funcion =
que existe hoy en
dia, y funciona icon_smile.gif

lo segundo que descubri fue que la existencia de tres terminos de la form=
a:
[S.A.] o [S.A] realmente implica que la funcion devuelva cualquier cantid=
ad de terminos ,
pero con la peculiaridad de que a ellos no, y es muy interesante pues es =
un gatillo, si
esos terminos caen en el rango de los terminos a entregar pues pum se da =
el problema

sin embargo, los terminos los veo con el openisis ejecutable

la base con que estoy probando pesa 38 MB en mst mas los otros ficheros,=
pasa de los 45
Mb, si fuera mas chiquita pues te invitaba a que la vieras

tratare hoy de dar mas debug, pero la verdad es que mis conocimientos no =
son tan grandes
como para definir a fondo donde esta el lio y por que

cu
roger
----------------------------------------------------------------------
Nodo central de la red Infomed (http://www.sld.cu)
Usuario linux: 97152 (http://counter.li.org)
Miembro del grupo de coordinacion de LinuxCuba (http://www.linux.cu)

"Whatever you do will be insignificant, but it is very important
that you do it."
Gandhi
----------------------------------------------------------------------


-------------------------------------------------
Este mensaje fue enviado usando el servicio de correo en web de Infomed
http://webmail.sld.cu

------------------------------------------
Posted to Phorum via PhorumMail
Escrito en: 18. 03. 2005 [17:40]
braulio
Braulio Solano Rojas
registrado desde: 16.05.2008
Entradas: 2
Hola.

> esto ultimo ya lo hice, pues es una muy ligera modificacion a la funcion
> que existe hoy en
> dia, y funciona icon_smile.gif

icon_smile.gif


> lo segundo que descubri fue que la existencia de tres terminos de la
> forma:
> [S.A.] o [S.A] realmente implica que la funcion devuelva cualquier
> cantidad de terminos ,
> pero con la peculiaridad de que a ellos no, y es muy interesante pues es
> un gatillo, si
> esos terminos caen en el rango de los terminos a entregar pues pum se da
> el problema
>
> sin embargo, los terminos los veo con el openisis ejecutable

Pues sucede que nunca he utilizado el punto, pero entiendo que significa
que habrán n palabras de distancia entre términos. Sin embargo aquí no
veo el espacio, o sea que no entiendo muy bien de qué estás hablando ni en
inglés ni en español. icon_frown.gif

> la base con que estoy probando pesa 38 MB en mst mas los otros ficheros,
> pasa de los 45
> Mb, si fuera mas chiquita pues te invitaba a que la vieras
>
> tratare hoy de dar mas debug, pero la verdad es que mis conocimientos no
> son tan grandes
> como para definir a fondo donde esta el lio y por que

Puedes compilar PHP como Command Line Interpreter con símbolos de
depuración. Poner isis como extensión estática, no compartida. Y
utilizar GDB para depurar. Si utilizas bien trace y breakpoint
condicionales entonces muy probablemente llegues al meollo del asunto.

Suerte.

B.

------------------------------------------
Posted to Phorum via PhorumMail
Escrito en: 18. 03. 2005 [17:53]
roger@infomed.sld.cu
Roger Peña Escob
Autor del tema
registrado desde: 31.12.1969
Entradas: 0
Mensaje citado por braulio@solsoft.co.cr:


>
> > lo segundo que descubri fue que la existencia de tres terminos de la
> > forma:
> > [S.A.] o [S.A] realmente implica que la funcion devuelva cualquier
> > cantidad de terminos ,
> > pero con la peculiaridad de que a ellos no, y es muy interesante pues=
es
> > un gatillo, si
> > esos terminos caen en el rango de los terminos a entregar pues pum se=
da
> > el problema
> >
> > sin embargo, los terminos los veo con el openisis ejecutable
>
> Pues sucede que nunca he utilizado el punto, pero entiendo que signific=
a
> que habr=E1n n palabras de distancia entre t=E9rminos. Sin embargo aqu=
=ED no
> veo el espacio, o sea que no entiendo muy bien de qu=E9 est=E1s habland=
o ni en
> ingl=E9s ni en espa=F1ol. icon_frown.gif
>

a ver.
no estoy realizando ninguna busqueda icon_smile.gif
solo estoy recuperando los _terminos del diccionario_

$terminos =3D isis_terms($root,$dbid);

$terminos es un arreglo cuyos elementos son los _terminos del diccionario=
_, no es asi?

bien, resulta que la funcion isis_terms "explota" (mal funciona) cuando l=
e toca recuperar,
meter en el array(), al termino [S.A.] , lo se porque voy probando termin=
o a termino
hasta llegar a el, aun cuando php-openisis _nunca_ me lo muestra se que e=
xiste porque
openisis _si_ me lo muestra

me explique ahora?

todo es alrededor de este codigo:
for (i=3D0; i<result.set.len; i++ )
{
if (add_next_index_stringl(return_value, result.set.field[i]=
.val,
result.set.field[i].len, 1) =3D=3D FAILURE)
{
zend_error(E_WARNING, "I can't successfuly complete the a=
rray!");
RETURN_FALSE;
}
}

cuando "i" coincide con la posicion donde esta esta el primero de los ter=
minos
conflictivos, pum, aparece el problema

> Puedes compilar PHP como Command Line Interpreter con s=EDmbolos de
> depuraci=F3n. Poner isis como extensi=F3n est=E1tica, no compartida. =
Y
> utilizar GDB para depurar. Si utilizas bien trace y breakpoint
> condicionales entonces muy probablemente llegues al meollo del asunto.

intentare hacer algo de eso

quisiera tambien tracudirme/entender esa parte de codigo de la funcion is=
is_terms() que
escribi arriba, para tratar de entender mejor porque explota
ver como pincha la funcion add_next_index_stringl()

saludos
roger

----------------------------------------------------------------------
Nodo central de la red Infomed (http://www.sld.cu)
Usuario linux: 97152 (http://counter.li.org)
Miembro del grupo de coordinacion de LinuxCuba (http://www.linux.cu)

"Whatever you do will be insignificant, but it is very important
that you do it."
Gandhi
----------------------------------------------------------------------


-------------------------------------------------
Este mensaje fue enviado usando el servicio de correo en web de Infomed
http://webmail.sld.cu

------------------------------------------
Posted to Phorum via PhorumMail
Escrito en: 18. 03. 2005 [20:41]
braulio
Braulio Solano Rojas
registrado desde: 16.05.2008
Entradas: 2
First I wish you all a happy holy week. ¡Felices Pascuas!

> a ver.
> no estoy realizando ninguna busqueda icon_smile.gif
> solo estoy recuperando los _terminos del diccionario_
>
> $terminos = isis_terms($root,$dbid);
>
> $terminos es un arreglo cuyos elementos son los _terminos del
> diccionario_, no es asi?

Ups. Ando, sinceramente, un poco cansado... y con el corazón roto.
Oups. I am, honestly, a little bit tired... and heart broken.

> bien, resulta que la funcion isis_terms "explota" (mal funciona) cuando le
> toca recuperar,
> meter en el array(), al termino [S.A.] , lo se porque voy probando termino
> a termino
> hasta llegar a el, aun cuando php-openisis _nunca_ me lo muestra se que
> existe porque
> openisis _si_ me lo muestra
>
> me explique ahora?

Si.
Yes. icon_wink.gif

> todo es alrededor de este codigo:
> for (i=0; i<result.set.len; i++ )
> {
> if (add_next_index_stringl(return_value,
> result.set.field[i].val, result.set.field[i].len, 1) == FAILURE)
> {
> zend_error(E_WARNING, "I can't successfuly complete the
> array!");
> RETURN_FALSE;
> }
> }
>
> cuando "i" coincide con la posicion donde esta esta el primero de los
> terminos
> conflictivos, pum, aparece el problema

Rarísimo y no sé a qué se deba. result.set es un conjunto de OpenIsis. i
es un índice y debería estar bien. val el valor y len el largo. return_value
es un arreglo del mundo de PHP, no del mundo de C. ¿Qué es pum?
Weird and I don't know what causes this. result.set is an OpenIsis set. i
is an index and should be fine. val the value and len the length.
return_value is an array of the PHP world, not of the C world. What is pum?

> intentare hacer algo de eso

Ojalá.
"May God want this." icon_biggrin.gif (Some spanish words come from Arab.)

> quisiera tambien tracudirme/entender esa parte de codigo de la funcion
> isis_terms() que
> escribi arriba, para tratar de entender mejor porque explota ver como
> pincha la funcion add_next_index_stringl()

La extensión pareciera ser algo simple, pero no es trivial en lo absoluto.
Requiere un conocimiento del API de OpenIsis y del API del Zend Engine al
mismo tiempo. De hecho, he notado que en los sitios que utilizan la
extensión nunca se menciona nada sobre ella ni sobre su creador, lo que me
hace sentir que se ha valorado poco ese trabajo y su importancia. :'(

Leete esto:
http://www.zend.com/apidoc/zend.variables.array.php

The extension seems to be simple, but it is not trivial at all. It requires
knowledge about the OpenIsis API and the Zend Engine API at the same time.
In fact, I have noticed that in sites that uses the extension it is never
mentioned anything about it or his creator, which makes me feel that the
work done and his importance has been under-rated. :'(

Read this:
http://www.zend.com/apidoc/zend.variables.array.php

Hasta pronto,
See ya,

B.

------------------------------------------
Posted to Phorum via PhorumMail
Escrito en: 18. 03. 2005 [21:39]
roger@infomed.sld.cu
Roger Peña Escob
Autor del tema
registrado desde: 31.12.1969
Entradas: 0
Mensaje citado por Braulio Jos=E9 Solano Rojas <braulio@solsoft.co.cr>:

> First I wish you all a happy holy week. =A1Felices Pascuas!
>
> > a ver.
> > no estoy realizando ninguna busqueda icon_smile.gif
> > solo estoy recuperando los _terminos del diccionario_
> >
> > $terminos =3D isis_terms($root,$dbid);
> >
> > $terminos es un arreglo cuyos elementos son los _terminos del
> > diccionario_, no es asi?
>
> Ups. Ando, sinceramente, un poco cansado... y con el coraz=F3n roto.
> Oups. I am, honestly, a little bit tired... and heart broken.
>
yo tambien estoy cansado, he tenido una semana muy intensa icon_frown.gif
asi que dejare la revision para el fin de semana icon_smile.gif


> > bien, resulta que la funcion isis_terms "explota" (mal funciona) cuan=
do le
> > toca recuperar,
> > meter en el array(), al termino [S.A.] , lo se porque voy probando te=
rmino
> > a termino
> > hasta llegar a el, aun cuando php-openisis _nunca_ me lo muestra se q=
ue
> > existe porque
> > openisis _si_ me lo muestra
> >
> > me explique ahora?
>
> Si.
> Yes. icon_wink.gif
>
> > todo es alrededor de este codigo:
> > for (i=3D0; i<result.set.len; i++ )
> > {
> > if (add_next_index_stringl(return_value,
> > result.set.field[i].val, result.set.field[i].len, 1) =3D=3D FAILURE)
> > {
> > zend_error(E_WARNING, "I can't successfuly complete t=
he
> > array!");
> > RETURN_FALSE;
> > }
> > }
> >
> > cuando "i" coincide con la posicion donde esta esta el primero de los
> > terminos
> > conflictivos, pum, aparece el problema
>
> Rar=EDsimo y no s=E9 a qu=E9 se deba. result.set es un conjunto de Ope=
nIsis. i
> es un =EDndice y deber=EDa estar bien. val el valor y len el largo. ret=
urn_value
> es un arreglo del mundo de PHP, no del mundo de C. =BFQu=E9 es pum?
> Weird and I don't know what causes this. result.set is an OpenIsis set=
. i
> is an index and should be fine. val the value and len the length.
> return_value is an array of the PHP world, not of the C world. What is =
pum?
>
icon_smile.gif "pum" trate de escribir una palabra onomatopellica (no se si se escri=
be asi icon_frown.gif )
reproducir el sonido que hace una explosion, o algun sonido fuerte y sorp=
resivo que te
asusta icon_smile.gif


> La extensi=F3n pareciera ser algo simple, pero no es trivial en lo abso=
luto.
> Requiere un conocimiento del API de OpenIsis y del API del Zend Engine =
al
> mismo tiempo. De hecho, he notado que en los sitios que utilizan la
> extensi=F3n nunca se menciona nada sobre ella ni sobre su creador, lo q=
ue me
> hace sentir que se ha valorado poco ese trabajo y su importancia. :'(

si, yo he visto unas cuantas veces el codigo, se ve simple pero es comple=
jo, simple porque
cuando he tenido necesidad de modificarlo lo he podido entender y ver el =
flujo de la
logica, complejo porque cuando he querido mejorarlo (soporte de escritura=
) no he
entendido ni "pitocha" como hacerlo icon_smile.gif

bueno, espero que aunque modesto, te sirva de alegria conocer este url:
http://biblio.casadelasamericas.org/clabel/opac/search_opac_query.php

es la primera vez que tengo el placer de poner en un lugar publico a clab=
el, y por regla
le pongo en el pie de cada pagina:
"Este sistema se distribuye bajo licencia GPL y usa OpenIsis (PHP-OpenIsi=
s)"

es minusculo, pero esta presente, que mas te gustaria que pusiera, estoy =
en la entera
disposicion de agregar cualquier cantidad de citas (que el cliente pueda =
aguantar icon_smile.gif )
para hacer que el mundo conozca el esfuerzo que tu y el equipo de openisi=
s han realizado
y que, ami juicio, otras fuerzas del mundo CDS/ISIS tratan de acallar icon_frown.gif


les contare la experiencia del fin de semana el lunes

saludos
roger
----------------------------------------------------------------------
Nodo central de la red Infomed (http://www.sld.cu)
Usuario linux: 97152 (http://counter.li.org)
Miembro del grupo de coordinacion de LinuxCuba (http://www.linux.cu)

"Whatever you do will be insignificant, but it is very important
that you do it."
Gandhi
----------------------------------------------------------------------


-------------------------------------------------
Este mensaje fue enviado usando el servicio de correo en web de Infomed
http://webmail.sld.cu

------------------------------------------
Posted to Phorum via PhorumMail



¿Ha olvidado su contraseña?

Por favor introduzca su nombre de usuario o dirección de correo electrónico. Las instrucciones para restablecer la contraseña serán inmediatamente enviadas por correo electrónico.
Restablecer contraseña

Volver al formulario de inicio de sesión 


Copyright © 2003-2009, Solsoft de Costa Rica S.A.
Declaración de privacidad