Прослушивание папок и файлов (изменения) - PullRequest
2 голосов
/ 09 марта 2012

Возможно прослушивать изменения папок и файлов (по событиям) на PHP или Node напрямую, или мне нужен собственный метод для этого?

Пример : мне нужно прослушать папку /user. Если я добавлю какой-нибудь файл в этот каталог, PHP или Node получат информацию и, например, запустят PathEvent::fileAdded("/user/user.profile"). Если я переименую папку, она запустится PathEvent::pathRenamed("/user/save1", "/user/save2").

Я знаю, что в PHP нет системы событий, такой как Node. Но для PHP я могу, например, запустить метод (которого я не знаю в настоящее время), в котором произошли изменения, произошедшие после последней проверки.

Ну ... мне нужен только способ начать поиск, я точно не знаю, каков термин этого поиска. Если вы можете показать мне пример, это тоже будет здорово! : P

Ответы [ 2 ]

1 голос
/ 09 марта 2012

Node.js предоставляет эту функциональность. Вы можете прочитать об этом здесь .

Простой пример:

var fs = require('fs');

fs.watch('somedir', function (event, filename) {
    console.log(event);
    console.log(filename);
});

Примечание:

При просмотре каталога предоставление аргумента имени файла в обратном вызове поддерживается не на всех платформах (в настоящее время поддерживается только в Linux и Windows). Даже на поддерживаемых платформах имя файла не всегда гарантируется. Поэтому не предполагайте, что аргумент имени файла всегда предоставляется в обратном вызове, и имейте некоторую запасную логику, если он равен нулю.

1 голос
/ 09 марта 2012

Если у вас есть доступ к способу доступа / изменения / добавления файлов и т. Д., Я бы создал пару таблиц в БД. Один для типов изменений и один для изменения и его отметки времени.

Когда кто-то что-то делает с файлом, т. Е. Переименовывает. Он проходит через вашу оболочку, которая также добавляет вставку в БД с текущей отметкой времени. Когда ваш PHP-скрипт запускается, вы можете получить все изменения с момента последней. Так

select * from Log where ModifiedOn > $lastRun.

Так я отслеживаю изменения в таблицах БД. Я надеюсь, что это помогает.

...