Bu sorunu çözmek için birden fazla yolu vardır.
Ben özelliklerini bilmiyorum ama belki PHP sürecini tetiklemek için başka bir yolu yoktur. Örneğin size kurulum komut dosyası çalıştırmak için bir tetikleyici olabilir bir SQL veritabanında olaylara dayalı çalıştırmak için kod ihtiyacınız varsa. Bu PostgreSQL altında yapmak gerçekten çok kolay: http://www.postgresql.org/docs/current/static/external-pl.html.
Dürüst olmak gerekirse ben senin en iyi bahis nohup kullanarak Damon süreç oluşturmak için olduğunu düşünüyorum. nohup komutu kullanıcının oturumu sonra bile yürütmeye devam etmek sağlar:
nohup php myscript.php &
Çok ciddi bir sorun ancak var. PHP'nin bellek yöneticisi tam çöp söylediğim gibi, bu bir script sadece birkaç saniye boyunca yürütülmesi ve daha sonra var olduğu varsayımı ile inşa edilmiştir. Sizin PHP script sadece birkaç gün sonra bellek gigabayt kullanmaya başlayacaktır. Ayrıca, bu gibi php script öldürür ve yeniden çoğaltılır, her 12 ya da belki 24 saat çalışan bir cron komut dosyası oluşturmak ZORUNLU:
killall -3 php
nohup php myscript.php &
Ancak komut bir işin ortasında ne olur? Peki öldürmek -3 bir kesme, CLI üzerinde ctrl + c yaparak olarak aynıdır. Sizin php komut dosyası düzgün PHP PCNTL kütüphanesi kullanarak bu kesme ve çıkış yakalamak: http://php.oregonstate.edu/manual/en/function.pcntl-signal.php
İşte bir örnek:
function clean_up() {
GLOBAL $lock;
mysql_close();
fclose($lock)
exit();
}
pcntl_signal(SIGINT, 'clean_up');
$ Kilidi arkasındaki fikir, PHP komut dosyası bir fopen ("dosya", "w") ile bir dosyayı açmak olabilir;. Sadece bir süreç bir dosya üzerinde yazma kilidi olabilir, bu nedenle bu kullanarak size PHP komut dosyası yalnızca bir kopyası çalıştığından emin olabilirsiniz.
İyi Şanslar!