Veritabanı bakım scripting / planlamasını düzenlemek için en denetlenebilir yolu nedir?

3 Cevap php

Ben PHP, Oracle ve crontab kullanıyorum. Crontab yerel ve uzak veritabanı arasında bazı verileri senkronize edecek olan, bir php komut dosyası yürütmesini.

Önce tek bir büyük anonim satıriçi PL / SQL blok bu koyarak ve PHP yürütmeden düşündüm. Sorun o dönünceye kadar prosedürü denetlemek için bir tablo oluşturmadan benim PHP kodu gerçekten opak olmasıdır. Geri dönmek yaptığında Ve sonra, ben yapabilirim en iyi ben bir denetim günlüğüne olarak birlikte birleştirilmiş ettik bir out parametresi bir dize alırsınız.

Sonra birkaç SQL ifadeleri içine kesiliyor ve PHP bazı ara denetim / günlüğü ve bunların her biri arasındaki veri manipülasyon yapmak var kabul.

Ya bu gerçekten memnun değilim. Nasıl bir cronjob denir bakım kodu organize?

3 Cevap

Oracle ile çalışırken, bir şey bu tür genellikle (9i önce veya işler,) Oracle'ın zamanlayıcı kullanarak, veritabanında yapılır. O çalışırken Ancak, bunu kullanarak olsa bile, süreç PHP kodu için opak olacaktır.

PHP kodu olarak çalışır büyük anonim blok nasıl ilerlediğini bilmek edebilmek için ne gerçekten istediğiniz gibi geliyor. Yazarken bir tablo olmadan işlemek için en iyi yolu, bağlamları kullanmaktır. Temel olarak, o ilerledikçe içeriği güncelleştirmek için anonim blok satır eklemek, veritabanında küresel bir bağlam oluşturmak olacak. Küresel bağlamlarda tüm oturumlarda görünür olduğundan, bağlam izlemek ve günlüğüne değişiklikleri yazmak için çalışan ayrı bir PHP konu olabilir.

Eğer bir bağlam oluşturduğunuzda Ancak, paket onu yönetmek için izin hangi göstermek zorunda, böylece özerk bloktan doğrudan güncelleştirmek olamaz. Sen bir paket içine özerk bloğun tamamını hareket ettirerek veya blok bu prosedürü çağıran, sonra içeriği güncelleştirmek şey yapmaz ama küçük bir paket oluşturarak gerçekleştirebilirsiniz.

Ben komut bu tip modu taahhüt kılavuzu kullanmak varsayalım. Ben kullanmak bakım script çoğu sadece (küçük iyidir değil, ama daha küçük, daha basit), oldukça küçük istekleri ile iş yapmak ve bir şeyler yanlış gittiğinde kurtarılabilir değil istisnalar, sonra değişiklikleri ve kullanım geri alma ise, istisnalar atmak error_log() ve kritik görev mail() çıkışına sorun için. Tüm iyi çalışması durumunda çıkış değişiklikleri sadece kararlıyız, tüm yapılır. Ben bir bayrak ya da bir şey gerekiyorsa, ben apc_store / apc_fetch() ya da basit bir dosyayı kullanabilirsiniz.

Yerel ve uzak veritabanları Oracle hem iseniz, o zaman bir PHP komut dosyası için daha esnek bir alternatif olarak Oracle Replication düşünebilirsiniz