26/07/2012, 14:25
|
| | Fecha de Ingreso: junio-2004 Ubicación: Ciudad de Panama
Mensajes: 551
Antigüedad: 20 años, 4 meses Puntos: 8 | |
Respuesta: Bloqueo temporal de proceso Gracias por sus respuestas p414 y cuasatar p414: Esa es una opción que estoy considerando. Creo que seria por el lado de crear una tabla temporal utilizando CREATE TEMP TABLE de la siguiente manera: Entra el primer proceso, este crearía la tabla temporal. Al entrar el segundo proceso se consultaría si existe la tabla temporal; de este modo si existe la tabla temporal quedaría patinando en un ciclo while mientras exista la tabla. Cuando ya no exista la tabla temporal sale del while y continua el proceso.
No lo hago con una tabla normal ya que si dentro del proceso ocurre alguna excepción como algún error en un query o al hacer un insert, esto haría que ocurriese un rollback pero la tabla seguiría existiendo y el segundo proceso quedaría patinando en el while.
Ahora, de hacerlo así no he podido saber como consulto si la TEMP TABLE ha sido creado por un proceso anterior (Esto en PostgreSQL que es el motor que se utiliza... ya hare consulta pertinente en el foro de PostgreSQL) cuasatar: Sí tengo conocimiento sobre transaccionalidad (BEGIN y COMMIT) pero esto no evitaría que el segundo proceso entre a operar simultáneamente con el el primero y por ende se perdería el concepto de generar los comprobantes en orden estrictamente consecutivo por proceso. Me explico con un ejemplo: con el primer proceso se generarían 5 comprobantes y con el segundo proceso se generarían 12 comprobantes. Se espera que los comprobantes generados en el primer proceso sean del 1 al 5 y con el segundo proceso se generen los comprobantes del 6 al 17. Utilizando BEGIN + COMMIT está el riesgo de que los comprobantes del primer proceso terminando sin excepciones fueran 1,2,7,9 y 10, mientras que los comprobantes del segundo proceso serian 3,4,5,6,8,11,etc. Ahora, queda la opción de utilizar bloqueos sobre las tablas involucradas (ACCESS EXCLUSIVE MODE por ejemplo), pero esto realiza el bloqueo por fila o por tabla y el caso mio es que son bastantes las tablas involucradas en el proceso, en fin, creo que esto ya se volvería tema para el foro de PostrgreSQL. Solo quería saber si mediante PHP pudiese programarse alguna forma de detener el proceso mientras haya alguno previamente establecido..... (?)
__________________ El que no sabe y sabe que no sabe, es un ignorante...enseñémosle!. El que no sabe y se cree que sabe, es un necio... ¡ignorémosle!.
El que sabe y sabe que sabe, es un sabio... ¡sigámosle!. |