Yeni bir dosya FTP üzerinden eklendiğinde PHP komut dosyasını çalıştırın

5 Cevap php

I have the following situation
Multiple cameras send images at random intervals via FTP to a predetermined folders.
EG:
recordings/camera1/images/ - for first camera
recordings/camera2/images/ - for second camera
etc
Each of them save images in .jpg format and then close FTP connection.

What I need to get done is to call a PHP script after each time a new file is added. So let us say whenever a new image is added into the /recordings folder I need to call the php script with newimage.php?location=recordings/camera1/images/picture002.jpg etc

The server is a Linux box, FTP - ProFTPD

Bunu nasıl yapabilirler herhangi bir öneriniz?

Teşekkürler.

5 Cevap

I would advise you to take a look at the mod_exec of ProFTPD. Here is a quote explaining its goal:

The mod_exec module can be used to execute external programs or scripts at various points in the process of handling FTP commands. By conscious design, ProFTPD does not and will not execute external programs. This is a security decision, as it was decided not to allow ProFTPD to serve as a means of compromising a system or disclosing information via bugs in external programs or scripts. Use of this module allows for such external programs to be executed, and also opens up the server to the mentioned possibilities of compromise or disclosure via those programs.

Ayrıca sistem dosya etkinliğini izlemek için sunduğu inotify de bir göz atabilirsiniz.

Ben yeni dosyalar her 5 veya 10 dakika arar bir cronjob yapacak. Sonra yeni bulunan görüntüler için wget ile PHP komut dosyası çağırın.

Update: Bu şekilde ProFTPD içine kanca gerekir gibi görünüyor. Belki mod_exec yardımcı olabilir.

Linux üzerinde bunu yapmak için inotify kullanmak gerekir. PHP inotify olayları almanızı sağlayan bir PECL modülü var. Dokümantasyon here.

Başka bir yol, bir yoktur.

mod_exec güvenlik sorunları için FTP sunucusu açılır. Günlük dosyalarını okuma bazen sunucu, vb log dosyası yazmama neden olabilir

Mod_mysql etkinleştirmeyi deneyin. Sonra, veritabanı tablosu size değişiklikler için MySQL tablo tarayabilir bu şekilde günlüğünü etkinleştirin. MySQL ve proftpd kullanarak oturum açmak için arama yapmayı deneyin http://www.iezzi.ch/archives/110

Siz (PHP) fonksiyonu (--fam ile bunu kullanarak derlenmiş ise) fam_monitor_directory kullanmalısınız. Bu tam olarak neye ihtiyacınız, yani bir PHP programı her dizinin içerik değişiklikleri çalıştırıyor.

(O dizinde kaç tane dosya önemli değildir cronjob böyle bir şey kullanın, döngü her change dizininde için bir kez gider:

[code]

/* opens a connection to the FAM service daemon */ $fam_res = fam_open ();

/* The second argument is the full pathname of the directory to monitor. */
$nres = fam_monitor_directory ( $fam_res, '/home/www/example.com/cameras/');

while( fam_pending ( $fam_res ) ) {
$arr = (fam_next_event($fam_res)) ;
if ($arr['code']) == FAMCreated ) {
/* deal here with the new file, which name now is stored in $arr['filename'] */
}
}

fam_close ($ fam_res);