Sayfa göndermek sonra Drupal işleme devam

5 Cevap php

Drupal sayfa gönderildikten sonra bazı ek işlemler yapmak gerekir.

Ben bir arka plan kabuk komutu ateş olabileceğini biliyorum, ama ben muhafaza edilmesi geçerli Drupal yürütme içeriği gerekir.

Ben zaman görünümlü harcadım, ama ben bu konuda herhangi bir belge bulamıyorum. Kesinlikle ortak bir gereklilik olması gerekir, çünkü bu şaşırtıcı değildir.

Ben sadece gerçek bir fikir kabuk komutu (exec, vb) üzerinden Drupal (tekrar) yangın ve sürekli işleme çağırmak istiyorum sahte yolu ile temin etmektir. Ama bu savurgan / gereksiz yere karmaşık görünüyor.

Herhangi bir işaretçiler büyük ölçüde tks takdir.

GÜNCELLEME: Googletorp ve Matt'in yanıt dayanarak, ben sadece bu ek işleme ile temizlik yapmıyorum işaret etmek istiyorum. Çok fazla detaya girmeden, ben içerik birden fazla düğüm dayanan sayfaların bir dizi var. Bu çocuğun bir değişiklik düğümleri, o sayfa hemen güncelleştirilmesi gerekiyor, ancak çocuk düğümü güncellenen kullanıcı bu olur ise bekleyen tutulması gereken hiçbir neden yoktur.

Bu nedenle, kontrol akışı olacaktır:

UPDATE CHILD NODE
RETURN UPDATED CHILD NODE VIEW TO USER (this is where Drupal would normally terminate)
REGENERATE PARENT PAGE
EXIT

Ancak giriş için teşekkürler - Cron ne de kuralları modül ne ben gerektiren aciliyeti var.

5 Cevap

Bu should http://drupal.org/project/job_queue kullanarak yapıyor ve cron ihtiyacınız ne olursa olsun tamamlamak için bir şeydir. Ancak hızlı bir düzeltme istiyoruz ve sadece sayfa görünmesini istiyorsanız ve şeyler PHP fonksiyon floş kullanabilirsiniz oluyor devam etmek () ise

http://php.net/manual/en/function.flush.php

Arka plan işlemleri için ben hook_cron ile drupal API yerleşik bir cron öneririz.

Sizin güncelleme acil yürütülmesine ihtiyaç gösterir. Bu nedenle forking veya zaman uyumsuz bir süreci gerektirecektir. Bir seçenek pcntl_fork (), ama (en azından mod_php ile) gerçekten web sunucusu sürecini ödemek istemiyorum çünkü ben sorunları yaşadım.

En iyi seçenek, daha sonra popen aracılığıyla çatallı kıvırmak işlemi yoluyla diyoruz (), özel olarak güncelleştirme gerçekleştirmek için bir sayfa kurmak için muhtemelen. Örneğin,

popen('curl http://localhost/update_parent_nodes &');

Belirli olayların gerçekleşmesi ne zaman kod çalıştırmasına olanak sağlayan kurallar modülünde, bir göz atabilirsiniz.

Burada OP. Sadece ileride insanlarla benim çözüm paylaşmak için:

Ben kullanılan özetlenen ikinci Drupal kabuk şablonu here

Bu komut satırından Drupal özyüklenirler. Ben CL benim kendi işlevi ve args belirtebilirsiniz böylece ben bunu biraz değiştirilmiş.

Çıkışı veya & yönlendirmek için unutmayın - Sonra PHP sistemi (arka operatörü ile birlikte) çağrısı (&) kullanarak yukarıdaki script çağrıldığında alakasız.

Biraz dağınık, ama tam olarak neye ihtiyacım yok.