Просмотр журнала на FTP-сервере - это хорошая идея, особенно если у вас есть много подкаталогов для сканирования. A tail
позволяет избежать затрат на решение для опроса и точно скажет вам, где искать файлы. Но я думаю, что это было бы легче реализовать с помощью оболочки, чем PHP.
У меня есть vsftpd на одном сервере, который генерирует журналы, в которых есть такие строки:
Fri Feb 24 05:37:43 2012 [pid 86561] [bob] OK UPLOAD: Client "10.2.3.4", "/path/to/file.txt", 6036 bytes, 32.77Kbyte/sec
Для запуска действий, основанных на этом, я мог бы использовать скрипт оболочки, подобный следующему:
#!/bin/sh
tail -F /var/log/vsftpd.log | while read junk junk junk junk junk junk junk user status command junk sourceip file junk; do
if [ "$command" = "UPLOAD:" -a "$status" = "OK" ]; then
if echo "$file" | grep -q '/path/to/.*\.txt'; then
# do some triggered action, like:
sql="INSERT INTO log VALUES ('$user', '$sourceip', '$file')"
if mysql -uusername -ppasswd -Ddbname -e"$sql"; then
filename="`echo \"$file\" | sed -r 's/\"(.*)\",$/\\1/'`"
mv "$filename" /path/to/donefiles/
fi
fi
fi
done
Это можно запустить с помощью обычных средств запуска вашей ОС или запустить cron с помощью @reboot
special.
Добавить обработку ошибок по вкусу.