Ben (syslog-ng.conf
ile) syslog-ng
takar bir PHP programı yazdı ve bu temelde bu var:
while (!feof(STDIN)) {
$input = fgets(STDIN);
process($input);
}
cleanup();
burada process()
ve cleanup()
tarafımdan tanımlanır.
Karşılıklı sorunu cleanup(2)
çağırdı ve ben bu program çıkmadan önce idam edilmesi gerek asla olmasıdır.
I pcntl_signal()
kullanarak SIGTERM, SIGHUP ve SIGPIPE yakalamaya çalıştık ve uygulamanın bu parçası (I öldürmek -1 PHP süreci üzerinde kullanırsanız, benim sinyal işleyicisi çağrılır iyi çalışıyor gibi görünüyor ve {[çalıştırır (1)]}), ama ben syslog-ng gelenler meessages almıyorum görünür.
Ben akışı engelleyen çünkü PHP sinyal eylemcileri demezdim düşünerek, engellenmeyen stdin'i ayarı denedim. Da işe yaramadı, benim sinyal işleyicileri adı olmazdı.
Nasıl syslog-ng benim uygulamayı durdurmak üzereyken biliyor musunuz, bu yüzden bazı temizlik yapabilirim?
Thanks, Tom
UPDATE: I 1-31, tüm sinyalleri yakalamak ve syslog-ng yeniden başlatılması (veya SIGTERM ile öldürüldü) olduğunda hala bir şey almaz denedim.