Bir PHP / uygulama oturumu bir Oracle / veritabanı oturumuna uyuyor mu?

0 Cevap php

Ben beklemiyordum bazı davranış yaşıyorum. Ben PHP/OCI8 üzerinden başladı bir senkron prosedürü var. Sürecin başlangıcında a SELECT...FOR UPDATE NOWAIT orada

Kullanıcıların yerine kendi tarayıcı kilidi için beklemek zorunda değil, süreç zaten çalışmakta olduğunu bir hata mesajı ile hemen haberdar istiyorum, çünkü ben NOWAIT yapmak.

Diğer bir ORA-00054: resource busy and acquire with NOWAIT specified alırken tek çalışır: Ben iki ayrı PHP oturumları ile iki ayrı bilgisayarlardan işlemini çalıştırdığınızda, ben beklenen davranışı olsun.

Ben aynı tarayıcı üzerinde iki sekme açın ve işlemi çalıştırdığınızda, ancak, ikinci sekme bitirmek için ilk biri için 30 + saniye bekler ve sonra ikinci bir çalışan - Ben belirtmek vermedi sanki bulunuyor {[(0) }].

Ben kalıcı bağlantılarını veya herhangi bir tür bağlantı havuzu kullanan değilim. Bana ayrı DB oturum verecek, ayrı bir PHP => Oracle bağlantıları yürütme, ayrı bir HTTP isteği düşündüm. Bu durum değil mi?

UPDATE: Bunu buldum: http://wiki.oracle.com/page/PHP+Oracle+FAQ # 6 altında, How do I connect to Oracle with the OCI8 extension? diyor:

PHP will share/re-use connections if the same user credentials are used more than once in a script or httpd server session. You can use the oci_new_connect() function to ensure a new session is used. Call the oci_pconnect() function to make a persistent connection that isn't closed at the end of the script (making the reconnection in the next script much faster).

Ben değiştirmek Ancak, oci_new_connect bu sorunu gidermek değil. Farklı bilgisayarlarda farklı oturumlar ORA-00054 atmak, ama aynı tarayıcı üzerinde iki sekme erişimi eşitlemek ama NOWAIT saygı yok.

0 Cevap