Я задаюсь вопросом, возможно ли, и раз так как, можно было создать сценарий жемчуга, который постоянно контролирует файл/дб, и затем назовите подпрограмму для выполнения обработки текста, если файл изменяется. Я вполне уверен, это было бы возможными сокетами использования, но это должно использоваться для приложения веб-чата на сайте, работающем на общем хосте, и я не настолько верные сокеты, был бы позволен на нем.
Основная идея:
Заранее спасибо.
Многие операционные системы запускают службу, которая позволяет приложениям регистрировать запрос, чтобы получать уведомления об обновлении файла или пути. Обычно это называется Монитор изменения файлов . См. Связанную страницу википедии для некоторых доступных систем. Последние системы Linux используют Inotify, ранее использовались Dnotify или gamin. OS X использует FSEvents. В Windows аналогичная система. Я не знаю ни одного модуля или механизма, который бы работал кросс-платформенным для всех этих систем, но есть определенные модули, доступные на CPAN, такие как SGI :: FAM и File :: Tail :: FAM .
use POE qw(Wheel::FollowTail);
POE::Session->create(
inline_states => {
_start => sub {
$_[HEAP]{tailor} = POE::Wheel::FollowTail->new(
Filename => "/var/log/thttpd.log",
InputEvent => "got_log_line",
ResetEvent => "got_log_rollover",
);
},
got_log_line => sub {
#print "Log: $_[ARG0]\n";
parseline($_[ARG0]);
},
got_log_rollover => sub {
#print "Log rolled over.\n";
},
}
);
POE::Kernel->run();
exit;
#parseline()...etc.
Я бы сделал это с помощью задания cron и Makefile, который запускал сценарий Perl. Удобно то, что вы автоматически получаете время скрипта Perl в качестве метки времени для сравнения, поскольку время скрипта обновляется при его вызове.