Почему функция filemtime работает с задержкой?

176
04 января 2019, 07:40

Написал класс который отслеживает изменения в файлах, но почему-то перехват изменения происходит с задержкой в пару секунд.

<?php

namespace App;

class CheckChange
{
private $srcDir;
private $srcExt;
private $structureUnitMTimes = [];
public function __construct($config)
{
    $this->srcDir = $config['compile']['srcDir'] ? $config['compile']['srcDir'] : './';
    $this->srcExt = $config['compile']['srcExt'] ? $config['compile']['srcExt'] : 'bea';
}
public function start() {
    $this->loop();
}
private function makeStructure($srcDir) {
    $units = scandir($srcDir);
    $units = array_slice($units, 2);
    $structure = [];
    foreach ($units as $unit) {
        $unitPath = $srcDir . '/' . $unit;
        if (is_dir($unitPath)) {
            $structure = array_merge($structure, $this->makeStructure($unitPath));
        } elseif (pathinfo($unitPath,PATHINFO_EXTENSION) == $this->srcExt) {
            $structure[] = $srcDir . '/' . $unit;
        }
    }
    return $structure;
}
private function loop() {
    while (true) {
        $structure = $this->makeStructure($this->srcDir);
        foreach ($structure as $unit) {
            if (array_key_exists($unit, $this->structureUnitMTimes) == false) {
                $this->structureUnitMTimes[$unit] = filemtime($unit);
                $this->findNewOrChange($unit);
            } elseif ($this->structureUnitMTimes[$unit] < filemtime($unit)) {
                $this->structureUnitMTimes[$unit] = filemtime($unit);
                $this->findNewOrChange($unit);
            }
        }
    }
}
private function findNewOrChange($unit) {
    var_dump($unit . ' на компиляции...');
}
}
READ ALSO
Переопределить репозиторий пакета в composer

Переопределить репозиторий пакета в composer

Столкнулся со следующей проблемой

127
поиск подстрок в массиве, состоящих из одинаковых букв

поиск подстрок в массиве, состоящих из одинаковых букв

предположим, у меня есть массив строк

216
Запись и чтение в файл с использованием fstream

Запись и чтение в файл с использованием fstream

Нужно периодически писать в файл данные, и из другого потока считывать и обрабатывать

198
В чем ошибается мой алгоритм (частотный анализ)?

В чем ошибается мой алгоритм (частотный анализ)?

Сразу говорю, что мой алгоритм не претендует на лучшее решение, я просто не могу понять, почему он правильно узнает только пробел (в 100% случаев),...

184