Bir webcoder PHP oci_pconnect işlevini kullanarak Oracle işlemleri Kuyruk

2 Cevap php

Ben PHP SOAP sınıfları kullanarak bir webcoder yazdım. Bir Oracle veritabanı, XML veri döndürmek için, ya da veritabanında silme / ekleme / güncelleştirme gerçekleştirmek için işlevlere sahiptir.

Ancak, şu anda bu AutoCommit kullanarak, bu nedenle herhangi bir işlem anında kararlıdır.

Ben işlemleri sıraya nasıl bakıyor, ve bir kullanıcı "kurtarmak" için bir düğmeye bastığında ancak o zaman sürü taahhüt ediyorum. Ben bu mümkün olup olmadığını bulmakta zorluk yaşıyorum. Ben tabii webservice ayrı operasyonlar için denir, kolayca tutarlı bir bağlantı muhafaza edemez.

Ben PHP oci_pconnect function kullanarak denedim, ama ben aynı parametrelerle, her zaman bağlantı bile, oturum sona görünüyor, ve nihayet {[(1 çağırdığınızda benim değişiklikleri kararlı değil )]}.

Herhangi bir fikir?

2 Cevap

PHP istekleri arasında aynı kaydedilmemiş veritabanı oturumu tekrar kullanımı mümkün değildir. Sen webserver rastgele çoğu herhangi birine bir istek gönderir gibi bir PHP süreçleri veya DB bağlantısı içine bir kullanıcı kilitlemek için hiçbir yolu yoktur. Bu nedenle istekleri arasında Oracle oturumda uncommited verileri tutamaz.

Bunu yapmanın en iyi yolu, gerçekten gereksinimlerine bağlıdır. Benim duygu istekleri arasındaki tüm bekleyen işlemleri tutabilir (user_id anahtarlı belki bir veritabanı tablo,) oturum deposuna çeşit istiyor. Kullanıcının tüm bekleyen istekleri dışarı çıkarmak ve nihai hedef tablonun içine yerleştirin ve sonra işlemek, kaydetmek vurur.

Bir alternatif de henüz tamamlanmadı diyor bir bayrak tüm işlemleri eklemek olacaktır. Tıklandıktan sonra, kaydetmek tamamlandıktan söylemek bayrağı güncelleyin.

Her iki şekilde de, o kayıt düğmesine basıldığında kadar bekleyen istekleri sahne yere ihtiyacımız var.

DBMS_XA oturumlar genelinde işlemleri paylaşmanızı sağlar.